@almadar/std 16.254.0 → 16.255.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.
- package/behaviors/lolo/agent/atoms/std-agent-pool.lolo +10 -10
- package/behaviors/lolo/agent/evals/eval-agent-builder.lolo +15 -8
- package/behaviors/lolo/agent/organisms/std-agent-builder.lolo +6 -5
- package/behaviors/registry/agent/atoms/std-agent-context.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-fix-loop.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-planner.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-pool.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-proposal.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-session.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-suggestions.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-tool-call.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +1 -1
- package/behaviors/registry/agent/atoms/std-agent-trace.orb +1 -1
- package/behaviors/registry/agent/evals/eval-agent-builder.orb +1 -1
- package/behaviors/registry/agent/organisms/std-agent-assistant.orb +1 -1
- package/behaviors/registry/agent/organisms/std-agent-builder.orb +1 -1
- package/behaviors/registry/infra/atoms/std-analytics.orb +1 -1
- package/behaviors/registry/infra/atoms/std-approval-gate.orb +1 -1
- package/behaviors/registry/infra/atoms/std-audit-capture.orb +1 -1
- package/behaviors/registry/infra/atoms/std-cache-aside.orb +1 -1
- package/behaviors/registry/infra/atoms/std-calendar-sync.orb +1 -1
- package/behaviors/registry/infra/atoms/std-cascade-on-delete.orb +1 -1
- package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +1 -1
- package/behaviors/registry/infra/atoms/std-cross-reference.orb +1 -1
- package/behaviors/registry/infra/atoms/std-data-erasure.orb +1 -1
- package/behaviors/registry/infra/atoms/std-data-import.orb +1 -1
- package/behaviors/registry/infra/atoms/std-global-search.orb +1 -1
- package/behaviors/registry/infra/atoms/std-knowledge-loop.orb +1 -1
- package/behaviors/registry/infra/atoms/std-lifecycle.orb +1 -1
- package/behaviors/registry/infra/atoms/std-migration-job.orb +1 -1
- package/behaviors/registry/infra/atoms/std-mod-queue.orb +1 -1
- package/behaviors/registry/infra/atoms/std-notification-center.orb +1 -1
- package/behaviors/registry/infra/atoms/std-notification-preferences.orb +1 -1
- package/behaviors/registry/infra/atoms/std-notify-on-event.orb +1 -1
- package/behaviors/registry/infra/atoms/std-page-search.orb +1 -1
- package/behaviors/registry/infra/atoms/std-page-watch.orb +1 -1
- package/behaviors/registry/infra/atoms/std-permission-matrix.orb +1 -1
- package/behaviors/registry/infra/atoms/std-rate-limiter.orb +1 -1
- package/behaviors/registry/infra/atoms/std-reminder-scheduler.orb +1 -1
- package/behaviors/registry/infra/atoms/std-review-cycle.orb +1 -1
- package/behaviors/registry/infra/atoms/std-row-access-control.orb +1 -1
- package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +1 -1
- package/behaviors/registry/infra/organisms/std-status-lifecycle-control.orb +1 -1
- package/behaviors/registry/ml/atoms/std-data-collector.orb +1 -1
- package/behaviors/registry/ml/atoms/std-graph-builder.orb +1 -1
- package/behaviors/registry/ml/atoms/std-ml-classify.orb +1 -1
- package/behaviors/registry/ml/atoms/std-ml-exact-check.orb +1 -1
- package/behaviors/registry/ml/atoms/std-ml-infer.orb +1 -1
- package/behaviors/registry/ml/atoms/std-ml-posterior.orb +1 -1
- package/behaviors/registry/ml/atoms/std-ml-similarity.orb +1 -1
- package/behaviors/registry/ml/atoms/std-tokenizer.orb +1 -1
- package/behaviors/registry/ml/atoms/std-weight-validator.orb +1 -1
- package/behaviors/registry/ml/organisms/std-escalating-decision.orb +1 -1
- package/behaviors/registry/ml/organisms/std-knowledge-tracing.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/std-avl-cosmic-zoom.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/ui-avl-glyph.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/ui-avl-state-machine.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/ui-avl-transition-detail.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/ui-avl-transition-explainer.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/ui-behavior-view.orb +1 -1
- package/behaviors/registry/ui/avl/atoms/ui-module-card.orb +1 -1
- package/behaviors/registry/ui/avl/organisms/ui-flow-canvas.orb +1 -1
- package/behaviors/registry/ui/avl/organisms/ui-layers-panel.orb +1 -1
- package/behaviors/registry/ui/avl/organisms/ui-orb-inspector.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-app-layout.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-app-search.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-behavior-catalog.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-behavior-tour.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-board.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-book-reader.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-browse.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-calendar.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-card-grid.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-confirmation.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-date-range.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-detail-layout.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-doc-page.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-esign-request.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-event-log.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-export.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-file-store.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-filter.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-gallery.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-gantt-schedule.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-geosearch.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-graphs.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-hero.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-home.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-import.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-language-picker.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-media-section.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-modal-editor.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-modal.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-multi-party-flow.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-notification-panel.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-panel-launcher.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-pricing.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-proof.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-prose.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-rating-review.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-record-detail.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-recurrence.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-related.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-role-gate.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-saved-search.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-scatter.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-scoped-list.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-search.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-selection.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-site-footer.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-site-header.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-slide-deck.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-stat-band.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-stats.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-step-flow.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-steps.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-tabs.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-thread.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-tree.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-version-history.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-wizard.orb +1 -1
- package/behaviors/registry/ui/core/atoms/std-workspace-layout.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-animated-graphic.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-animated-reveal.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-aside.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-atlas-image.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-atlas-panel.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-avatar.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-badge.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-box.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-button.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-card.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-center.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-checkbox.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-conditional-wrapper.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-confetti-effect.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-day-cell.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-dialog.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-divider.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-filter-pill.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-flip-container.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-game-icon.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-hstack.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-icon.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-image.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-infinite-scroll-sentinel.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-input.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-label.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-law-reference-tooltip.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-overlay.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-pattern-tile.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-presence.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-progress-bar.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-radio.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-range-slider.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-section-header.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-select.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-spacer.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-sparkline.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-spinner.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-stack.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-status-dot.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-branch.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-connection.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-flow.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-grid.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-lobe.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-mesh.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-morph.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-node.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-pulse.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-ring.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-shield.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-svg-stack.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-switch.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-text-highlight.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-textarea.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-theme-toggle.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-time-slot-cell.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-trend-indicator.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-typewriter-text.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-typography.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-video-embed.orb +1 -1
- package/behaviors/registry/ui/core/atoms/ui-vstack.orb +1 -1
- package/behaviors/registry/ui/core/molecules/std-stat-rows.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-accordion.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-activation-block.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-activity-rail.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-agent-activity-feed.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-agent-activity-row.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-agent-chat-feed.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-alert.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-animated-counter.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-bloom-quiz-block.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-branching-logic-builder.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-carousel.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-change-list.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-chart-legend.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-chart.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-code-block.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-commit-row.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-connection-block.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-container.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-content-renderer.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-data-list.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-date-range-selector.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-doc-breadcrumb.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-doc-pagination.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-doc-search.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-doc-sidebar.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-doc-toc.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-document-details.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-drawer.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-edge-decoration.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-empty-state.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-error-boundary.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-error-state.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-feature-card.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-feature-grid.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-file-tree.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-flex.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-flip-card.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-form-field.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-form-layout.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-form-section-header.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-fx-overlay.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-gantt.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-geometric-pattern.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-gradient-divider.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-graph-view.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-grid.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-header.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-icon-button.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-import-progress.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-import-source-picker.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-input-group.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-jazari-state-machine.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-lightbox.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-line-chart.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-loading-state.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-map-view.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-markdown-content.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-matrix-question.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-menu.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-meter.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-modal.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-navigation.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-notification.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-number-stepper.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-option-constraint-group.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-orbital-visualization.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-page-header.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-page-transition.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-pagination.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-popover.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-positioned-canvas.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-progress-dots.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-pull-to-refresh.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-qr-scanner.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-quiz-block.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-reflection-block.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-rich-text-editor.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-scaled-diagram.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-search-input.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-section.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-side-panel.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-sidebar.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-simple-grid.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-skeleton.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-social-proof.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-split.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-star-rating.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-stat-display.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-table-view.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-tabs.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-tag-input.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-tooltip.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-top-nav-item.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-version-diff.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-violation-alert.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-vote-stack.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-wizard-container.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-wizard-navigation.orb +1 -1
- package/behaviors/registry/ui/core/molecules/ui-wizard-progress.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-chat-bar.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-code-runner-panel.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-dashboard-grid.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-dock-layout.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-drawer-slot.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-form-section.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-form.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-master-detail-layout.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-modal-slot.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-runtime-debugger.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-split-pane.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-subagent-trace-panel.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-tabbed-container.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-timeline.orb +1 -1
- package/behaviors/registry/ui/core/organisms/ui-toast-slot.orb +1 -1
- package/behaviors/registry/ui/core/templates/ui-auth-layout.orb +1 -1
- package/behaviors/registry/ui/core/templates/ui-counter-template.orb +1 -1
- package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +1 -1
- package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-arcade-play.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-area-fill.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-audio-cue.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-camera-rig.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-chase-ai.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-choice-gate.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-coef-pad.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-curve-fog.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-fx-narrative.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-fx-particles.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-fx-trail.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-gate-lock.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-gather.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-gold.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-grid-tactics.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-hero-nav.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-lives.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-loop-lock.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-market-flow.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-motion-body.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-objective-reach.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-pad-lock.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-patience.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-patrol-hazard.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-pickup.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-production.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-score.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-tutorial-autodemo.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-tutorial-overlay.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-velocity-gate.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-xp.orb +1 -1
- package/behaviors/registry/ui/game/atoms/std-zone-card.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-canvas.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-control-button.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-group.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-mesh.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-shape-layer.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-shape.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-skinned-mesh.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-sprite-layer.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-text-layer.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-draw-text.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-game-audio-cue.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-health-bar.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-score-display.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-stat-badge.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-state-graph.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-state-json-view.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-timer-display.orb +1 -1
- package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-platformer-puzzle.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +1 -1
- package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +1 -1
- package/behaviors/registry/ui/game/templates/ui-game-shell.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-compare.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-fx-cues.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-generate.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-live-sim.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-measure.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-param-explorer.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-perturb.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-sample-accumulator.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-sandbox.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-scenario.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-sim-3d.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-slope-probe.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-transport.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/std-learn-tree.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +1 -1
- package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +1 -1
- package/dist/behaviors-embeddings.hash.json +1 -1
- package/dist/behaviors-embeddings.json +1 -1
- package/dist/knob-embeddings.hash.json +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"std-learn-goal-seek","version":"1.0.0","description":"Generic goal-seek (inverse-problem) instrument — a config-declared target curve is drawn from a hidden parameter pair, and the learner tunes their own two parameters with sliders until their curve matches it, then presses Check to be graded against an RMS-distance tolerance. The curve family (power y = A·xᴮ, linear y = A + B·x, or sine y = A·sin(B·x)), the hidden target parameters, the tolerance, and every label are config-declared, so the same mechanism serves any inverse problem: fit a demand curve, match a projectile arc, tune a growth rate, recover a wave's amplitude and frequency. A live distance readout (optionally hidden for a harder variant) plays warmer/colder. Standalone by default; behind a lab router set matchMode and it renders only when MODE_SELECTED matches.","orbitals":[{"name":"GoalSeekOrbital","id":"orb_G9ANEW2K6R9KCD90V57R420QWF","entity":{"name":"GoalSeekScene","id":"ent_QMVZ86Q5D3JPHWNVWDE7YZQAV6","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"active","type":"boolean","default":false},{"name":"title","type":"string"},{"name":"curveKind","type":"string"},{"name":"goalText","type":"string"},{"name":"targetA","type":"number"},{"name":"targetB","type":"number"},{"name":"paramA","type":"number"},{"name":"paramB","type":"number"},{"name":"paramALabel","type":"string"},{"name":"paramBLabel","type":"string"},{"name":"targetSamples","type":"array","items":{"type":"object","properties":{"x":{"name":"x","type":"number","required":true},"y":{"name":"y","type":"number","required":true}}}},{"name":"curves","type":"array","items":{"type":"object","properties":{"color":{"name":"color","type":"string","required":false},"samples":{"name":"samples","type":"array","required":true,"items":{"type":"object","properties":{"x":{"name":"x","type":"number","required":true},"y":{"name":"y","type":"number","required":true}}}},"label":{"name":"label","type":"string","required":false}}}},{"name":"distance","type":"number","default":0},{"name":"attempts","type":"number","default":0},{"name":"solved","type":"boolean","default":false},{"name":"feedback","type":"string"},{"name":"resultRow","type":"array","items":{"type":"node"}},{"name":"yMin","type":"number"},{"name":"yMax","type":"number"}]},"traits":[{"name":"GoalSeekSim","id":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS","entityRebindable":true,"entityContract":{"requires":[],"provides":["active","attempts","curveKind","curves","distance","feedback","goalText","paramA","paramALabel","paramB","paramBLabel","resultRow","solved","targetA","targetB","targetSamples","title","yMax","yMin"]},"effectRow":[{"kind":"emit","resource":"GOAL_CHECKED"},{"kind":"emit","resource":"GOAL_RESET"},{"kind":"emit","resource":"LEARN_ROUND_COMPLETE"},{"kind":"emit","resource":"PARAMS_CHANGED"},{"kind":"render-ui","resource":"main"},{"kind":"set","resource":"@entity.active"},{"kind":"set","resource":"@entity.attempts"},{"kind":"set","resource":"@entity.curveKind"},{"kind":"set","resource":"@entity.curves"},{"kind":"set","resource":"@entity.distance"},{"kind":"set","resource":"@entity.feedback"},{"kind":"set","resource":"@entity.goalText"},{"kind":"set","resource":"@entity.paramA"},{"kind":"set","resource":"@entity.paramALabel"},{"kind":"set","resource":"@entity.paramB"},{"kind":"set","resource":"@entity.paramBLabel"},{"kind":"set","resource":"@entity.resultRow"},{"kind":"set","resource":"@entity.solved"},{"kind":"set","resource":"@entity.targetA"},{"kind":"set","resource":"@entity.targetB"},{"kind":"set","resource":"@entity.targetSamples"},{"kind":"set","resource":"@entity.title"},{"kind":"set","resource":"@entity.yMax"},{"kind":"set","resource":"@entity.yMin"}],"category":"interaction","linkedEntity":"GoalSeekScene","linkedEntityId":"ent_QMVZ86Q5D3JPHWNVWDE7YZQAV6","entityRefIds":{"GoalSeekScene":"ent_QMVZ86Q5D3JPHWNVWDE7YZQAV6"},"emits":[{"event":"PARAMS_CHANGED","eventId":"evt_R5PF3PVRJ2W91FAY5BGDDE3HF7","description":"The learner's parameter values and current distance after a slider change — a composed listener (readout, coach) can subscribe; a harmless no-op when the atom runs standalone.","tier":"domain","scope":"external","payloadSchema":[{"name":"paramA","type":"number"},{"name":"paramB","type":"number"},{"name":"distance","type":"number"}]},{"event":"GOAL_CHECKED","eventId":"evt_6YJQFER7VY3XZDMBBBR3NJAN3K","description":"The verdict of a Check press: whether the learner's curve is within tolerance of the target, the RMS distance, and how many attempts it took.","synonyms":"goal seek, inverse problem, curve fitting, match the target, tune to fit","tier":"domain","scope":"external","payloadSchema":[{"name":"matched","type":"boolean"},{"name":"distance","type":"number"},{"name":"attempts","type":"number"}]},{"event":"GOAL_RESET","eventId":"evt_3NS3C93G8RR4C9MQ1AXEARQPMW","description":"The learner reset the instrument back to the default parameters.","tier":"domain","scope":"external","payloadSchema":[{"name":"attempts","type":"number"}]},{"event":"LEARN_ROUND_COMPLETE","eventId":"evt_KTRQT9Z22VH1DXTRWT9VAWP8JS","description":"Fired once when a Check lands within tolerance (the goal is matched) — the standard learning completion broadcast a celebration/progression sibling (fx cues, badges) rides.","synonyms":"round complete, finished, done, completion, solved","tier":"domain","scope":"external","payloadSchema":[{"name":"score","type":"number"},{"name":"total","type":"number"}]}],"stateMachine":{"states":[{"name":"idle","isInitial":true}],"events":[{"key":"INIT","id":"evt_MJBP345X5WYJYDAWXYRHE5Y4PX","name":"Initialize"},{"key":"MODE_SELECTED","id":"evt_DK9ST1H9BZMNZXMDE104WSH6WY","name":"Mode Selected","description":"Lab router broadcast naming the active mode; this instrument renders when the mode equals matchMode, otherwise renders null.","tier":"domain","payloadSchema":[{"name":"mode","type":"string"}],"listened":true},{"key":"ROSTER_LOADED","id":"evt_EXSXRNCZMJFT93EZ3185J9EGG4","name":"Roster Loaded","description":"Runtime content feed, honoured only when rosterSource is event — mode names the instrument it is for (the matchMode it carries, blank when standalone) and goalText, curveKind, targetA and targetB define the inverse problem; a matching instrument re-initialises from it exactly as INIT does from config, any other instrument hides.","tier":"domain","payloadSchema":[{"name":"mode","type":"string","required":true},{"name":"goalText","type":"string","required":true},{"name":"curveKind","type":"string","required":true},{"name":"targetA","type":"number","required":true},{"name":"targetB","type":"number","required":true}],"listened":true},{"key":"SET_PARAM_A","id":"evt_61ZBRXTRXYCEZ14RC0M3JZ2QGP","name":"Set Param A","description":"Learner dragged the first parameter's slider — value is the new A; the learner curve and its distance to the target recompute immediately.","tier":"domain","payloadSchema":[{"name":"value","type":"number"}],"listened":true},{"key":"SET_PARAM_B","id":"evt_PPX7BHE5YR2ZCCM48STNG0YY2P","name":"Set Param B","description":"Learner dragged the second parameter's slider — value is the new B; the learner curve and its distance to the target recompute immediately.","tier":"domain","payloadSchema":[{"name":"value","type":"number"}],"listened":true},{"key":"CHECK","id":"evt_9CXZ3C0ZE4FQ23TG00W84ZJWVS","name":"Check","description":"Learner asked to be graded — the current RMS distance is compared against the tolerance and the attempt is counted.","tier":"domain","listened":true},{"key":"RESET","id":"evt_YQYJM47E77Q3KZKM3CXB5TTH0P","name":"Reset","description":"Learner reset the parameters to their defaults and cleared the attempt count; the target stays the same.","tier":"domain","listened":true},{"key":"PARAMS_CHANGED","id":"evt_R5PF3PVRJ2W91FAY5BGDDE3HF7","name":"Params Changed","description":"The learner's parameter values and current distance after a slider change — a composed listener (readout, coach) can subscribe; a harmless no-op when the atom runs standalone.","tier":"domain","payloadSchema":[{"name":"paramA","type":"number"},{"name":"paramB","type":"number"},{"name":"distance","type":"number"}]},{"key":"GOAL_CHECKED","id":"evt_6YJQFER7VY3XZDMBBBR3NJAN3K","name":"Goal Checked","description":"The verdict of a Check press: whether the learner's curve is within tolerance of the target, the RMS distance, and how many attempts it took.","synonyms":"goal seek, inverse problem, curve fitting, match the target, tune to fit","tier":"domain","payloadSchema":[{"name":"matched","type":"boolean"},{"name":"distance","type":"number"},{"name":"attempts","type":"number"}]},{"key":"GOAL_RESET","id":"evt_3NS3C93G8RR4C9MQ1AXEARQPMW","name":"Goal Reset","description":"The learner reset the instrument back to the default parameters.","tier":"domain","payloadSchema":[{"name":"attempts","type":"number"}]},{"key":"LEARN_ROUND_COMPLETE","id":"evt_KTRQT9Z22VH1DXTRWT9VAWP8JS","name":"Learn Round Complete","description":"Fired once when a Check lands within tolerance (the goal is matched) — the standard learning completion broadcast a celebration/progression sibling (fx cues, badges) rides.","synonyms":"round complete, finished, done, completion, solved","tier":"domain","payloadSchema":[{"name":"score","type":"number"},{"name":"total","type":"number"}]}],"transitions":[{"from":"idle","to":"idle","event":"INIT","eventId":"evt_MJBP345X5WYJYDAWXYRHE5Y4PX","guard":["and",["==","@config.matchMode",""],["==","@config.rosterSource","config"]],"effects":[["let",[["kind","@config.curveKind"],["span",["-","@config.xMax","@config.xMin"]],["tA","@config.targetA"],["tB","@config.targetB"],["A","@config.paramADefault"],["B","@config.paramBDefault"],["targetSamples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@tA",["math/pow","@x","@tB"]],["if",["==","@kind","linear"],["+","@tA",["*","@tB","@x"]],["*","@tA",["math/sin",["*","@tB","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["samples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@A",["math/pow","@x","@B"]],["if",["==","@kind","linear"],["+","@A",["*","@B","@x"]],["*","@A",["math/sin",["*","@B","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["dist",["math/sqrt",["/",["array/sum",["array/map",["array/range",0,81],["fn",["i"],["let",[["dY",["-",["object/get",["array/nth","@samples","@i"],"y"],["object/get",["array/nth","@targetSamples","@i"],"y"]]]],["*","@dY","@dY"]]]]],81]]],["allSamples",["array/concat","@samples","@targetSamples"]],["yMinRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/min","@acc",["object/get","@s","y"]]]]],["yMaxRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/max","@acc",["object/get","@s","y"]]]]],["yPad",["*",0.1,["math/max",0.001,["-","@yMaxRaw","@yMinRaw"]]]]],["do",["set","@entity.active",true],["set","@entity.title","@config.title"],["set","@entity.curveKind","@kind"],["set","@entity.goalText","@config.goalText"],["set","@entity.targetA","@tA"],["set","@entity.targetB","@tB"],["set","@entity.paramA","@A"],["set","@entity.paramB","@B"],["set","@entity.paramALabel","@config.paramALabel"],["set","@entity.paramBLabel","@config.paramBLabel"],["set","@entity.targetSamples","@targetSamples"],["set","@entity.distance","@dist"],["set","@entity.attempts",0],["set","@entity.solved",false],["set","@entity.feedback",""],["set","@entity.yMin",["-","@yMinRaw","@yPad"]],["set","@entity.yMax",["+","@yMaxRaw","@yPad"]],["set","@entity.curves",[{"label":"@config.targetLabel","color":"@config.targetColor","samples":"@targetSamples"},{"label":"@config.learnerLabel","color":"@config.learnerColor","samples":"@samples"}]]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}]]},{"from":"idle","to":"idle","event":"MODE_SELECTED","eventId":"evt_DK9ST1H9BZMNZXMDE104WSH6WY","guard":["and",["not",["==","@config.matchMode",""]],["not",["==","@payload.mode","@config.matchMode"]]],"effects":[["set","@entity.active",false],["render-ui","main",null]]},{"from":"idle","to":"idle","event":"MODE_SELECTED","eventId":"evt_DK9ST1H9BZMNZXMDE104WSH6WY","guard":["and",["==","@payload.mode","@config.matchMode"],["==","@config.rosterSource","config"]],"effects":[["let",[["kind","@config.curveKind"],["span",["-","@config.xMax","@config.xMin"]],["tA","@config.targetA"],["tB","@config.targetB"],["A","@config.paramADefault"],["B","@config.paramBDefault"],["targetSamples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@tA",["math/pow","@x","@tB"]],["if",["==","@kind","linear"],["+","@tA",["*","@tB","@x"]],["*","@tA",["math/sin",["*","@tB","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["samples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@A",["math/pow","@x","@B"]],["if",["==","@kind","linear"],["+","@A",["*","@B","@x"]],["*","@A",["math/sin",["*","@B","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["dist",["math/sqrt",["/",["array/sum",["array/map",["array/range",0,81],["fn",["i"],["let",[["dY",["-",["object/get",["array/nth","@samples","@i"],"y"],["object/get",["array/nth","@targetSamples","@i"],"y"]]]],["*","@dY","@dY"]]]]],81]]],["allSamples",["array/concat","@samples","@targetSamples"]],["yMinRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/min","@acc",["object/get","@s","y"]]]]],["yMaxRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/max","@acc",["object/get","@s","y"]]]]],["yPad",["*",0.1,["math/max",0.001,["-","@yMaxRaw","@yMinRaw"]]]]],["do",["set","@entity.active",true],["set","@entity.title","@config.title"],["set","@entity.curveKind","@kind"],["set","@entity.goalText","@config.goalText"],["set","@entity.targetA","@tA"],["set","@entity.targetB","@tB"],["set","@entity.paramA","@A"],["set","@entity.paramB","@B"],["set","@entity.paramALabel","@config.paramALabel"],["set","@entity.paramBLabel","@config.paramBLabel"],["set","@entity.targetSamples","@targetSamples"],["set","@entity.distance","@dist"],["set","@entity.attempts",0],["set","@entity.solved",false],["set","@entity.feedback",""],["set","@entity.yMin",["-","@yMinRaw","@yPad"]],["set","@entity.yMax",["+","@yMaxRaw","@yPad"]],["set","@entity.curves",[{"label":"@config.targetLabel","color":"@config.targetColor","samples":"@targetSamples"},{"label":"@config.learnerLabel","color":"@config.learnerColor","samples":"@samples"}]]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}]]},{"from":"idle","to":"idle","event":"ROSTER_LOADED","eventId":"evt_EXSXRNCZMJFT93EZ3185J9EGG4","guard":["and",["==","@config.rosterSource","event"],["and",["==","@payload.mode","@config.matchMode"],["!=","@payload.curveKind",""]]],"effects":[["let",[["kind","@payload.curveKind"],["span",["-","@config.xMax","@config.xMin"]],["tA","@payload.targetA"],["tB","@payload.targetB"],["A","@config.paramADefault"],["B","@config.paramBDefault"],["targetSamples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@tA",["math/pow","@x","@tB"]],["if",["==","@kind","linear"],["+","@tA",["*","@tB","@x"]],["*","@tA",["math/sin",["*","@tB","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["samples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@A",["math/pow","@x","@B"]],["if",["==","@kind","linear"],["+","@A",["*","@B","@x"]],["*","@A",["math/sin",["*","@B","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["dist",["math/sqrt",["/",["array/sum",["array/map",["array/range",0,81],["fn",["i"],["let",[["dY",["-",["object/get",["array/nth","@samples","@i"],"y"],["object/get",["array/nth","@targetSamples","@i"],"y"]]]],["*","@dY","@dY"]]]]],81]]],["allSamples",["array/concat","@samples","@targetSamples"]],["yMinRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/min","@acc",["object/get","@s","y"]]]]],["yMaxRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/max","@acc",["object/get","@s","y"]]]]],["yPad",["*",0.1,["math/max",0.001,["-","@yMaxRaw","@yMinRaw"]]]]],["do",["set","@entity.active",true],["set","@entity.title","@config.title"],["set","@entity.curveKind","@kind"],["set","@entity.goalText","@payload.goalText"],["set","@entity.targetA","@payload.targetA"],["set","@entity.targetB","@payload.targetB"],["set","@entity.paramA","@A"],["set","@entity.paramB","@B"],["set","@entity.paramALabel","@config.paramALabel"],["set","@entity.paramBLabel","@config.paramBLabel"],["set","@entity.targetSamples","@targetSamples"],["set","@entity.distance","@dist"],["set","@entity.attempts",0],["set","@entity.solved",false],["set","@entity.feedback",""],["set","@entity.yMin",["-","@yMinRaw","@yPad"]],["set","@entity.yMax",["+","@yMaxRaw","@yPad"]],["set","@entity.curves",[{"label":"@config.targetLabel","color":"@config.targetColor","samples":"@targetSamples"},{"label":"@config.learnerLabel","color":"@config.learnerColor","samples":"@samples"}]]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}]]},{"from":"idle","to":"idle","event":"ROSTER_LOADED","eventId":"evt_EXSXRNCZMJFT93EZ3185J9EGG4","guard":["and",["==","@config.rosterSource","event"],["not",["==","@payload.mode","@config.matchMode"]]],"effects":[["set","@entity.active",false],["render-ui","main",null]]},{"from":"idle","to":"idle","event":"SET_PARAM_A","eventId":"evt_61ZBRXTRXYCEZ14RC0M3JZ2QGP","guard":["and",["==","@entity.active",true],["==","@entity.solved",false]],"effects":[["let",[["A",["math/clamp","@payload.value","@config.paramAMin","@config.paramAMax"]],["B","@entity.paramB"],["kind","@entity.curveKind"],["span",["-","@config.xMax","@config.xMin"]],["samples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@A",["math/pow","@x","@B"]],["if",["==","@kind","linear"],["+","@A",["*","@B","@x"]],["*","@A",["math/sin",["*","@B","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["dist",["math/sqrt",["/",["array/sum",["array/map",["array/range",0,81],["fn",["i"],["let",[["dY",["-",["object/get",["array/nth","@samples","@i"],"y"],["object/get",["array/nth","@entity.targetSamples","@i"],"y"]]]],["*","@dY","@dY"]]]]],81]]],["allSamples",["array/concat","@samples","@entity.targetSamples"]],["yMinRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/min","@acc",["object/get","@s","y"]]]]],["yMaxRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/max","@acc",["object/get","@s","y"]]]]],["yPad",["*",0.1,["math/max",0.001,["-","@yMaxRaw","@yMinRaw"]]]]],["do",["set","@entity.paramA","@A"],["set","@entity.distance","@dist"],["set","@entity.yMin",["-","@yMinRaw","@yPad"]],["set","@entity.yMax",["+","@yMaxRaw","@yPad"]],["set","@entity.curves",[{"label":"@config.targetLabel","color":"@config.targetColor","samples":"@entity.targetSamples"},{"label":"@config.learnerLabel","color":"@config.learnerColor","samples":"@samples"}]]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}],["emit","PARAMS_CHANGED",{"paramA":"@entity.paramA","paramB":"@entity.paramB","distance":"@entity.distance"}]]},{"from":"idle","to":"idle","event":"SET_PARAM_B","eventId":"evt_PPX7BHE5YR2ZCCM48STNG0YY2P","guard":["and",["==","@entity.active",true],["==","@entity.solved",false]],"effects":[["let",[["A","@entity.paramA"],["B",["math/clamp","@payload.value","@config.paramBMin","@config.paramBMax"]],["kind","@entity.curveKind"],["span",["-","@config.xMax","@config.xMin"]],["samples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@A",["math/pow","@x","@B"]],["if",["==","@kind","linear"],["+","@A",["*","@B","@x"]],["*","@A",["math/sin",["*","@B","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["dist",["math/sqrt",["/",["array/sum",["array/map",["array/range",0,81],["fn",["i"],["let",[["dY",["-",["object/get",["array/nth","@samples","@i"],"y"],["object/get",["array/nth","@entity.targetSamples","@i"],"y"]]]],["*","@dY","@dY"]]]]],81]]],["allSamples",["array/concat","@samples","@entity.targetSamples"]],["yMinRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/min","@acc",["object/get","@s","y"]]]]],["yMaxRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/max","@acc",["object/get","@s","y"]]]]],["yPad",["*",0.1,["math/max",0.001,["-","@yMaxRaw","@yMinRaw"]]]]],["do",["set","@entity.paramB","@B"],["set","@entity.distance","@dist"],["set","@entity.yMin",["-","@yMinRaw","@yPad"]],["set","@entity.yMax",["+","@yMaxRaw","@yPad"]],["set","@entity.curves",[{"label":"@config.targetLabel","color":"@config.targetColor","samples":"@entity.targetSamples"},{"label":"@config.learnerLabel","color":"@config.learnerColor","samples":"@samples"}]]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}],["emit","PARAMS_CHANGED",{"paramA":"@entity.paramA","paramB":"@entity.paramB","distance":"@entity.distance"}]]},{"from":"idle","to":"idle","event":"CHECK","eventId":"evt_9CXZ3C0ZE4FQ23TG00W84ZJWVS","guard":["and",["==","@entity.active",true],["==","@entity.solved",false]],"effects":[["set","@entity.attempts",["+","@entity.attempts",1]],["set","@entity.solved",["if",["<=","@entity.distance","@config.tolerance"],true,false]],["set","@entity.feedback",["if",["<=","@entity.distance","@config.tolerance"],["str/concat","Matched! Distance ",["math/round","@entity.distance",3]," is within tolerance ",["math/round","@config.tolerance",3],"."],["str/concat","Not yet — distance ",["math/round","@entity.distance",3]," is above tolerance ",["math/round","@config.tolerance",3],". Keep tuning."]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}],["emit","GOAL_CHECKED",{"matched":"@entity.solved","distance":"@entity.distance","attempts":"@entity.attempts"}],["if","@entity.solved",["emit","LEARN_ROUND_COMPLETE",{"score":1,"total":1}],null]]},{"from":"idle","to":"idle","event":"RESET","eventId":"evt_YQYJM47E77Q3KZKM3CXB5TTH0P","guard":["==","@entity.active",true],"effects":[["let",[["A","@config.paramADefault"],["B","@config.paramBDefault"],["kind","@entity.curveKind"],["span",["-","@config.xMax","@config.xMin"]],["samples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@A",["math/pow","@x","@B"]],["if",["==","@kind","linear"],["+","@A",["*","@B","@x"]],["*","@A",["math/sin",["*","@B","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["dist",["math/sqrt",["/",["array/sum",["array/map",["array/range",0,81],["fn",["i"],["let",[["dY",["-",["object/get",["array/nth","@samples","@i"],"y"],["object/get",["array/nth","@entity.targetSamples","@i"],"y"]]]],["*","@dY","@dY"]]]]],81]]],["allSamples",["array/concat","@samples","@entity.targetSamples"]],["yMinRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/min","@acc",["object/get","@s","y"]]]]],["yMaxRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/max","@acc",["object/get","@s","y"]]]]],["yPad",["*",0.1,["math/max",0.001,["-","@yMaxRaw","@yMinRaw"]]]]],["do",["set","@entity.paramA","@A"],["set","@entity.paramB","@B"],["set","@entity.distance","@dist"],["set","@entity.attempts",0],["set","@entity.solved",false],["set","@entity.feedback",""],["set","@entity.yMin",["-","@yMinRaw","@yPad"]],["set","@entity.yMax",["+","@yMaxRaw","@yPad"]],["set","@entity.curves",[{"label":"@config.targetLabel","color":"@config.targetColor","samples":"@entity.targetSamples"},{"label":"@config.learnerLabel","color":"@config.learnerColor","samples":"@samples"}]]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}],["emit","GOAL_RESET",{"attempts":0}]]}]},"config":{"targetA":{"type":"number","default":2.5,"label":"Target A","description":"Hidden first parameter of the target curve the learner must recover.","tier":"domain"},"width":{"type":"number","default":600,"label":"Width","tier":"presentation"},"height":{"type":"number","default":400,"label":"Height","tier":"presentation"},"matchMode":{"type":"string","default":"","label":"Match Mode","description":"When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT (or on ROSTER_LOADED when rosterSource is event).","tier":"presentation"},"paramALabel":{"type":"string","default":"A","label":"Parameter A Label","description":"Display label for the first parameter.","tier":"presentation"},"paramAMax":{"type":"number","default":5,"label":"Parameter A Max","tier":"domain"},"paramBStep":{"type":"number","default":0.1,"label":"Parameter B Step","tier":"presentation"},"rosterSource":{"type":"string","default":"config","label":"Roster Source","description":"Where the problem definition (goalText, curveKind, targetA, targetB) comes from: config reads those knobs at INIT; event waits for ROSTER_LOADED and takes them from its payload.","tier":"domain","values":["config","event"]},"summary":{"type":"string","default":"","label":"Concept","description":"One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line.","tier":"presentation"},"learnerColor":{"type":"string","default":"series-2","label":"Learner Color","tier":"presentation"},"showAxes":{"type":"boolean","default":true,"label":"Show Axes","tier":"presentation"},"paramBMax":{"type":"number","default":5,"label":"Parameter B Max","tier":"domain"},"paramBDefault":{"type":"number","default":1,"label":"Parameter B Default","description":"Starting value of the learner's second parameter.","tier":"domain"},"targetColor":{"type":"string","default":"guide","label":"Target Color","tier":"presentation"},"checkLabel":{"type":"string","default":"Check","label":"Check Label","tier":"presentation"},"title":{"type":"string","default":"Goal Seek","label":"Title","description":"Title shown above the canvas.","tier":"presentation"},"paramBLabel":{"type":"string","default":"B","label":"Parameter B Label","description":"Display label for the second parameter.","tier":"presentation"},"paramAMin":{"type":"number","default":-5,"label":"Parameter A Min","tier":"domain"},"paramBMin":{"type":"number","default":-5,"label":"Parameter B Min","tier":"domain"},"goalText":{"type":"string","default":"Tune the two sliders until your curve matches the target curve, then press Check.","label":"Goal Text","description":"One-sentence statement of the inverse problem the learner must solve.","tier":"domain"},"targetB":{"type":"number","default":1.5,"label":"Target B","description":"Hidden second parameter of the target curve the learner must recover.","tier":"domain"},"showLiveDistance":{"type":"boolean","default":true,"label":"Show Live Distance","description":"When true the RMS distance updates live as the learner tunes (warmer/colder); when false only attempts are shown, for a harder variant.","tier":"domain"},"tolerance":{"type":"number","default":0.35,"label":"Tolerance","description":"Maximum RMS distance between learner and target curves that still counts as a match.","tier":"domain"},"paramADefault":{"type":"number","default":1,"label":"Parameter A Default","description":"Starting value of the learner's first parameter.","tier":"domain"},"curveKind":{"type":"string","default":"sine","label":"Curve Kind","description":"Curve family both curves are drawn from: power (y = A·xᴮ), linear (y = A + B·x), or sine (y = A·sin(B·x)).","synonyms":"curve family, power law, linear function, sine wave, function type","tier":"domain"},"targetLabel":{"type":"string","default":"Target","label":"Target Label","tier":"presentation"},"showGrid":{"type":"boolean","default":true,"label":"Show Grid","tier":"presentation"},"paramAStep":{"type":"number","default":0.1,"label":"Parameter A Step","tier":"presentation"},"xMin":{"type":"number","default":0,"label":"X Min","tier":"presentation"},"learnerLabel":{"type":"string","default":"Yours","label":"Learner Label","tier":"presentation"},"xMax":{"type":"number","default":10,"label":"X Max","tier":"presentation"},"gridStep":{"type":"number","default":1,"label":"Grid Step","tier":"presentation"}},"scope":"instance"}],"pages":[{"name":"GoalSeekPage","id":"pag_9BJ87ZCEYT7FDA9GNY9NP5PNXD","path":"/learn-goal-seek","traits":[{"ref":"GoalSeekSim","refId":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"}]}],"types":{"GoalSeekCurve":[{"name":"label","type":"string"},{"name":"color","type":"string"},{"name":"samples","type":"[object]","required":true,"properties":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]}],"GoalSeekCurveSample":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_QMVZ86Q5D3JPHWNVWDE7YZQAV6":{"id":"ent_QMVZ86Q5D3JPHWNVWDE7YZQAV6","kind":"entity","bakedName":"GoalSeekScene","curName":"GoalSeekScene","renames":[],"owner":"workspace"},"evt_3NS3C93G8RR4C9MQ1AXEARQPMW":{"id":"evt_3NS3C93G8RR4C9MQ1AXEARQPMW","kind":"event","bakedName":"GOAL_RESET","curName":"GOAL_RESET","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_61ZBRXTRXYCEZ14RC0M3JZ2QGP":{"id":"evt_61ZBRXTRXYCEZ14RC0M3JZ2QGP","kind":"event","bakedName":"SET_PARAM_A","curName":"SET_PARAM_A","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_6YJQFER7VY3XZDMBBBR3NJAN3K":{"id":"evt_6YJQFER7VY3XZDMBBBR3NJAN3K","kind":"event","bakedName":"GOAL_CHECKED","curName":"GOAL_CHECKED","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_9CXZ3C0ZE4FQ23TG00W84ZJWVS":{"id":"evt_9CXZ3C0ZE4FQ23TG00W84ZJWVS","kind":"event","bakedName":"CHECK","curName":"CHECK","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_DK9ST1H9BZMNZXMDE104WSH6WY":{"id":"evt_DK9ST1H9BZMNZXMDE104WSH6WY","kind":"event","bakedName":"MODE_SELECTED","curName":"MODE_SELECTED","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_EXSXRNCZMJFT93EZ3185J9EGG4":{"id":"evt_EXSXRNCZMJFT93EZ3185J9EGG4","kind":"event","bakedName":"ROSTER_LOADED","curName":"ROSTER_LOADED","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_KTRQT9Z22VH1DXTRWT9VAWP8JS":{"id":"evt_KTRQT9Z22VH1DXTRWT9VAWP8JS","kind":"event","bakedName":"LEARN_ROUND_COMPLETE","curName":"LEARN_ROUND_COMPLETE","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_MJBP345X5WYJYDAWXYRHE5Y4PX":{"id":"evt_MJBP345X5WYJYDAWXYRHE5Y4PX","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_PPX7BHE5YR2ZCCM48STNG0YY2P":{"id":"evt_PPX7BHE5YR2ZCCM48STNG0YY2P","kind":"event","bakedName":"SET_PARAM_B","curName":"SET_PARAM_B","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_R5PF3PVRJ2W91FAY5BGDDE3HF7":{"id":"evt_R5PF3PVRJ2W91FAY5BGDDE3HF7","kind":"event","bakedName":"PARAMS_CHANGED","curName":"PARAMS_CHANGED","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_YQYJM47E77Q3KZKM3CXB5TTH0P":{"id":"evt_YQYJM47E77Q3KZKM3CXB5TTH0P","kind":"event","bakedName":"RESET","curName":"RESET","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"orb_G9ANEW2K6R9KCD90V57R420QWF":{"id":"orb_G9ANEW2K6R9KCD90V57R420QWF","kind":"orbital","bakedName":"GoalSeekOrbital","curName":"GoalSeekOrbital","renames":[],"owner":"workspace"},"pag_9BJ87ZCEYT7FDA9GNY9NP5PNXD":{"id":"pag_9BJ87ZCEYT7FDA9GNY9NP5PNXD","kind":"page","bakedName":"GoalSeekPage","curName":"GoalSeekPage","renames":[],"owner":"workspace"},"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS":{"id":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS","kind":"trait","bakedName":"GoalSeekSim","curName":"GoalSeekSim","renames":[],"owner":"workspace"}}}}
|
|
1
|
+
{"name":"std-learn-goal-seek","version":"1.0.0","description":"Generic goal-seek (inverse-problem) instrument — a config-declared target curve is drawn from a hidden parameter pair, and the learner tunes their own two parameters with sliders until their curve matches it, then presses Check to be graded against an RMS-distance tolerance. The curve family (power y = A·xᴮ, linear y = A + B·x, or sine y = A·sin(B·x)), the hidden target parameters, the tolerance, and every label are config-declared, so the same mechanism serves any inverse problem: fit a demand curve, match a projectile arc, tune a growth rate, recover a wave's amplitude and frequency. A live distance readout (optionally hidden for a harder variant) plays warmer/colder. Standalone by default; behind a lab router set matchMode and it renders only when MODE_SELECTED matches.","orbitals":[{"name":"GoalSeekOrbital","id":"orb_G9ANEW2K6R9KCD90V57R420QWF","entity":{"name":"GoalSeekScene","id":"ent_QMVZ86Q5D3JPHWNVWDE7YZQAV6","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"active","type":"boolean","default":false},{"name":"title","type":"string"},{"name":"curveKind","type":"string"},{"name":"goalText","type":"string"},{"name":"targetA","type":"number"},{"name":"targetB","type":"number"},{"name":"paramA","type":"number"},{"name":"paramB","type":"number"},{"name":"paramALabel","type":"string"},{"name":"paramBLabel","type":"string"},{"name":"targetSamples","type":"array","items":{"type":"object","properties":{"y":{"name":"y","type":"number","required":true},"x":{"name":"x","type":"number","required":true}}}},{"name":"curves","type":"array","items":{"type":"object","properties":{"samples":{"name":"samples","type":"array","required":true,"items":{"type":"object","properties":{"x":{"name":"x","type":"number","required":true},"y":{"name":"y","type":"number","required":true}}}},"label":{"name":"label","type":"string","required":false},"color":{"name":"color","type":"string","required":false}}}},{"name":"distance","type":"number","default":0},{"name":"attempts","type":"number","default":0},{"name":"solved","type":"boolean","default":false},{"name":"feedback","type":"string"},{"name":"resultRow","type":"array","items":{"type":"node"}},{"name":"yMin","type":"number"},{"name":"yMax","type":"number"}]},"traits":[{"name":"GoalSeekSim","id":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS","entityRebindable":true,"entityContract":{"requires":[],"provides":["active","attempts","curveKind","curves","distance","feedback","goalText","paramA","paramALabel","paramB","paramBLabel","resultRow","solved","targetA","targetB","targetSamples","title","yMax","yMin"]},"effectRow":[{"kind":"emit","resource":"GOAL_CHECKED"},{"kind":"emit","resource":"GOAL_RESET"},{"kind":"emit","resource":"LEARN_ROUND_COMPLETE"},{"kind":"emit","resource":"PARAMS_CHANGED"},{"kind":"render-ui","resource":"main"},{"kind":"set","resource":"@entity.active"},{"kind":"set","resource":"@entity.attempts"},{"kind":"set","resource":"@entity.curveKind"},{"kind":"set","resource":"@entity.curves"},{"kind":"set","resource":"@entity.distance"},{"kind":"set","resource":"@entity.feedback"},{"kind":"set","resource":"@entity.goalText"},{"kind":"set","resource":"@entity.paramA"},{"kind":"set","resource":"@entity.paramALabel"},{"kind":"set","resource":"@entity.paramB"},{"kind":"set","resource":"@entity.paramBLabel"},{"kind":"set","resource":"@entity.resultRow"},{"kind":"set","resource":"@entity.solved"},{"kind":"set","resource":"@entity.targetA"},{"kind":"set","resource":"@entity.targetB"},{"kind":"set","resource":"@entity.targetSamples"},{"kind":"set","resource":"@entity.title"},{"kind":"set","resource":"@entity.yMax"},{"kind":"set","resource":"@entity.yMin"}],"category":"interaction","linkedEntity":"GoalSeekScene","linkedEntityId":"ent_QMVZ86Q5D3JPHWNVWDE7YZQAV6","entityRefIds":{"GoalSeekScene":"ent_QMVZ86Q5D3JPHWNVWDE7YZQAV6"},"emits":[{"event":"PARAMS_CHANGED","eventId":"evt_R5PF3PVRJ2W91FAY5BGDDE3HF7","description":"The learner's parameter values and current distance after a slider change — a composed listener (readout, coach) can subscribe; a harmless no-op when the atom runs standalone.","tier":"domain","scope":"external","payloadSchema":[{"name":"paramA","type":"number"},{"name":"paramB","type":"number"},{"name":"distance","type":"number"}]},{"event":"GOAL_CHECKED","eventId":"evt_6YJQFER7VY3XZDMBBBR3NJAN3K","description":"The verdict of a Check press: whether the learner's curve is within tolerance of the target, the RMS distance, and how many attempts it took.","synonyms":"goal seek, inverse problem, curve fitting, match the target, tune to fit","tier":"domain","scope":"external","payloadSchema":[{"name":"matched","type":"boolean"},{"name":"distance","type":"number"},{"name":"attempts","type":"number"}]},{"event":"GOAL_RESET","eventId":"evt_3NS3C93G8RR4C9MQ1AXEARQPMW","description":"The learner reset the instrument back to the default parameters.","tier":"domain","scope":"external","payloadSchema":[{"name":"attempts","type":"number"}]},{"event":"LEARN_ROUND_COMPLETE","eventId":"evt_KTRQT9Z22VH1DXTRWT9VAWP8JS","description":"Fired once when a Check lands within tolerance (the goal is matched) — the standard learning completion broadcast a celebration/progression sibling (fx cues, badges) rides.","synonyms":"round complete, finished, done, completion, solved","tier":"domain","scope":"external","payloadSchema":[{"name":"score","type":"number"},{"name":"total","type":"number"}]}],"stateMachine":{"states":[{"name":"idle","isInitial":true}],"events":[{"key":"INIT","id":"evt_MJBP345X5WYJYDAWXYRHE5Y4PX","name":"Initialize"},{"key":"MODE_SELECTED","id":"evt_DK9ST1H9BZMNZXMDE104WSH6WY","name":"Mode Selected","description":"Lab router broadcast naming the active mode; this instrument renders when the mode equals matchMode, otherwise renders null.","tier":"domain","payloadSchema":[{"name":"mode","type":"string"}],"listened":true},{"key":"ROSTER_LOADED","id":"evt_EXSXRNCZMJFT93EZ3185J9EGG4","name":"Roster Loaded","description":"Runtime content feed, honoured only when rosterSource is event — mode names the instrument it is for (the matchMode it carries, blank when standalone) and goalText, curveKind, targetA and targetB define the inverse problem; a matching instrument re-initialises from it exactly as INIT does from config, any other instrument hides.","tier":"domain","payloadSchema":[{"name":"mode","type":"string","required":true},{"name":"goalText","type":"string","required":true},{"name":"curveKind","type":"string","required":true},{"name":"targetA","type":"number","required":true},{"name":"targetB","type":"number","required":true}],"listened":true},{"key":"SET_PARAM_A","id":"evt_61ZBRXTRXYCEZ14RC0M3JZ2QGP","name":"Set Param A","description":"Learner dragged the first parameter's slider — value is the new A; the learner curve and its distance to the target recompute immediately.","tier":"domain","payloadSchema":[{"name":"value","type":"number"}],"listened":true},{"key":"SET_PARAM_B","id":"evt_PPX7BHE5YR2ZCCM48STNG0YY2P","name":"Set Param B","description":"Learner dragged the second parameter's slider — value is the new B; the learner curve and its distance to the target recompute immediately.","tier":"domain","payloadSchema":[{"name":"value","type":"number"}],"listened":true},{"key":"CHECK","id":"evt_9CXZ3C0ZE4FQ23TG00W84ZJWVS","name":"Check","description":"Learner asked to be graded — the current RMS distance is compared against the tolerance and the attempt is counted.","tier":"domain","listened":true},{"key":"RESET","id":"evt_YQYJM47E77Q3KZKM3CXB5TTH0P","name":"Reset","description":"Learner reset the parameters to their defaults and cleared the attempt count; the target stays the same.","tier":"domain","listened":true},{"key":"PARAMS_CHANGED","id":"evt_R5PF3PVRJ2W91FAY5BGDDE3HF7","name":"Params Changed","description":"The learner's parameter values and current distance after a slider change — a composed listener (readout, coach) can subscribe; a harmless no-op when the atom runs standalone.","tier":"domain","payloadSchema":[{"name":"paramA","type":"number"},{"name":"paramB","type":"number"},{"name":"distance","type":"number"}]},{"key":"GOAL_CHECKED","id":"evt_6YJQFER7VY3XZDMBBBR3NJAN3K","name":"Goal Checked","description":"The verdict of a Check press: whether the learner's curve is within tolerance of the target, the RMS distance, and how many attempts it took.","synonyms":"goal seek, inverse problem, curve fitting, match the target, tune to fit","tier":"domain","payloadSchema":[{"name":"matched","type":"boolean"},{"name":"distance","type":"number"},{"name":"attempts","type":"number"}]},{"key":"GOAL_RESET","id":"evt_3NS3C93G8RR4C9MQ1AXEARQPMW","name":"Goal Reset","description":"The learner reset the instrument back to the default parameters.","tier":"domain","payloadSchema":[{"name":"attempts","type":"number"}]},{"key":"LEARN_ROUND_COMPLETE","id":"evt_KTRQT9Z22VH1DXTRWT9VAWP8JS","name":"Learn Round Complete","description":"Fired once when a Check lands within tolerance (the goal is matched) — the standard learning completion broadcast a celebration/progression sibling (fx cues, badges) rides.","synonyms":"round complete, finished, done, completion, solved","tier":"domain","payloadSchema":[{"name":"score","type":"number"},{"name":"total","type":"number"}]}],"transitions":[{"from":"idle","to":"idle","event":"INIT","eventId":"evt_MJBP345X5WYJYDAWXYRHE5Y4PX","guard":["and",["==","@config.matchMode",""],["==","@config.rosterSource","config"]],"effects":[["let",[["kind","@config.curveKind"],["span",["-","@config.xMax","@config.xMin"]],["tA","@config.targetA"],["tB","@config.targetB"],["A","@config.paramADefault"],["B","@config.paramBDefault"],["targetSamples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@tA",["math/pow","@x","@tB"]],["if",["==","@kind","linear"],["+","@tA",["*","@tB","@x"]],["*","@tA",["math/sin",["*","@tB","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["samples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@A",["math/pow","@x","@B"]],["if",["==","@kind","linear"],["+","@A",["*","@B","@x"]],["*","@A",["math/sin",["*","@B","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["dist",["math/sqrt",["/",["array/sum",["array/map",["array/range",0,81],["fn",["i"],["let",[["dY",["-",["object/get",["array/nth","@samples","@i"],"y"],["object/get",["array/nth","@targetSamples","@i"],"y"]]]],["*","@dY","@dY"]]]]],81]]],["allSamples",["array/concat","@samples","@targetSamples"]],["yMinRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/min","@acc",["object/get","@s","y"]]]]],["yMaxRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/max","@acc",["object/get","@s","y"]]]]],["yPad",["*",0.1,["math/max",0.001,["-","@yMaxRaw","@yMinRaw"]]]]],["do",["set","@entity.active",true],["set","@entity.title","@config.title"],["set","@entity.curveKind","@kind"],["set","@entity.goalText","@config.goalText"],["set","@entity.targetA","@tA"],["set","@entity.targetB","@tB"],["set","@entity.paramA","@A"],["set","@entity.paramB","@B"],["set","@entity.paramALabel","@config.paramALabel"],["set","@entity.paramBLabel","@config.paramBLabel"],["set","@entity.targetSamples","@targetSamples"],["set","@entity.distance","@dist"],["set","@entity.attempts",0],["set","@entity.solved",false],["set","@entity.feedback",""],["set","@entity.yMin",["-","@yMinRaw","@yPad"]],["set","@entity.yMax",["+","@yMaxRaw","@yPad"]],["set","@entity.curves",[{"label":"@config.targetLabel","color":"@config.targetColor","samples":"@targetSamples"},{"label":"@config.learnerLabel","color":"@config.learnerColor","samples":"@samples"}]]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}]]},{"from":"idle","to":"idle","event":"MODE_SELECTED","eventId":"evt_DK9ST1H9BZMNZXMDE104WSH6WY","guard":["and",["not",["==","@config.matchMode",""]],["not",["==","@payload.mode","@config.matchMode"]]],"effects":[["set","@entity.active",false],["render-ui","main",null]]},{"from":"idle","to":"idle","event":"MODE_SELECTED","eventId":"evt_DK9ST1H9BZMNZXMDE104WSH6WY","guard":["and",["==","@payload.mode","@config.matchMode"],["==","@config.rosterSource","config"]],"effects":[["let",[["kind","@config.curveKind"],["span",["-","@config.xMax","@config.xMin"]],["tA","@config.targetA"],["tB","@config.targetB"],["A","@config.paramADefault"],["B","@config.paramBDefault"],["targetSamples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@tA",["math/pow","@x","@tB"]],["if",["==","@kind","linear"],["+","@tA",["*","@tB","@x"]],["*","@tA",["math/sin",["*","@tB","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["samples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@A",["math/pow","@x","@B"]],["if",["==","@kind","linear"],["+","@A",["*","@B","@x"]],["*","@A",["math/sin",["*","@B","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["dist",["math/sqrt",["/",["array/sum",["array/map",["array/range",0,81],["fn",["i"],["let",[["dY",["-",["object/get",["array/nth","@samples","@i"],"y"],["object/get",["array/nth","@targetSamples","@i"],"y"]]]],["*","@dY","@dY"]]]]],81]]],["allSamples",["array/concat","@samples","@targetSamples"]],["yMinRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/min","@acc",["object/get","@s","y"]]]]],["yMaxRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/max","@acc",["object/get","@s","y"]]]]],["yPad",["*",0.1,["math/max",0.001,["-","@yMaxRaw","@yMinRaw"]]]]],["do",["set","@entity.active",true],["set","@entity.title","@config.title"],["set","@entity.curveKind","@kind"],["set","@entity.goalText","@config.goalText"],["set","@entity.targetA","@tA"],["set","@entity.targetB","@tB"],["set","@entity.paramA","@A"],["set","@entity.paramB","@B"],["set","@entity.paramALabel","@config.paramALabel"],["set","@entity.paramBLabel","@config.paramBLabel"],["set","@entity.targetSamples","@targetSamples"],["set","@entity.distance","@dist"],["set","@entity.attempts",0],["set","@entity.solved",false],["set","@entity.feedback",""],["set","@entity.yMin",["-","@yMinRaw","@yPad"]],["set","@entity.yMax",["+","@yMaxRaw","@yPad"]],["set","@entity.curves",[{"label":"@config.targetLabel","color":"@config.targetColor","samples":"@targetSamples"},{"label":"@config.learnerLabel","color":"@config.learnerColor","samples":"@samples"}]]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}]]},{"from":"idle","to":"idle","event":"ROSTER_LOADED","eventId":"evt_EXSXRNCZMJFT93EZ3185J9EGG4","guard":["and",["==","@config.rosterSource","event"],["and",["==","@payload.mode","@config.matchMode"],["!=","@payload.curveKind",""]]],"effects":[["let",[["kind","@payload.curveKind"],["span",["-","@config.xMax","@config.xMin"]],["tA","@payload.targetA"],["tB","@payload.targetB"],["A","@config.paramADefault"],["B","@config.paramBDefault"],["targetSamples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@tA",["math/pow","@x","@tB"]],["if",["==","@kind","linear"],["+","@tA",["*","@tB","@x"]],["*","@tA",["math/sin",["*","@tB","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["samples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@A",["math/pow","@x","@B"]],["if",["==","@kind","linear"],["+","@A",["*","@B","@x"]],["*","@A",["math/sin",["*","@B","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["dist",["math/sqrt",["/",["array/sum",["array/map",["array/range",0,81],["fn",["i"],["let",[["dY",["-",["object/get",["array/nth","@samples","@i"],"y"],["object/get",["array/nth","@targetSamples","@i"],"y"]]]],["*","@dY","@dY"]]]]],81]]],["allSamples",["array/concat","@samples","@targetSamples"]],["yMinRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/min","@acc",["object/get","@s","y"]]]]],["yMaxRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/max","@acc",["object/get","@s","y"]]]]],["yPad",["*",0.1,["math/max",0.001,["-","@yMaxRaw","@yMinRaw"]]]]],["do",["set","@entity.active",true],["set","@entity.title","@config.title"],["set","@entity.curveKind","@kind"],["set","@entity.goalText","@payload.goalText"],["set","@entity.targetA","@payload.targetA"],["set","@entity.targetB","@payload.targetB"],["set","@entity.paramA","@A"],["set","@entity.paramB","@B"],["set","@entity.paramALabel","@config.paramALabel"],["set","@entity.paramBLabel","@config.paramBLabel"],["set","@entity.targetSamples","@targetSamples"],["set","@entity.distance","@dist"],["set","@entity.attempts",0],["set","@entity.solved",false],["set","@entity.feedback",""],["set","@entity.yMin",["-","@yMinRaw","@yPad"]],["set","@entity.yMax",["+","@yMaxRaw","@yPad"]],["set","@entity.curves",[{"label":"@config.targetLabel","color":"@config.targetColor","samples":"@targetSamples"},{"label":"@config.learnerLabel","color":"@config.learnerColor","samples":"@samples"}]]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}]]},{"from":"idle","to":"idle","event":"ROSTER_LOADED","eventId":"evt_EXSXRNCZMJFT93EZ3185J9EGG4","guard":["and",["==","@config.rosterSource","event"],["not",["==","@payload.mode","@config.matchMode"]]],"effects":[["set","@entity.active",false],["render-ui","main",null]]},{"from":"idle","to":"idle","event":"SET_PARAM_A","eventId":"evt_61ZBRXTRXYCEZ14RC0M3JZ2QGP","guard":["and",["==","@entity.active",true],["==","@entity.solved",false]],"effects":[["let",[["A",["math/clamp","@payload.value","@config.paramAMin","@config.paramAMax"]],["B","@entity.paramB"],["kind","@entity.curveKind"],["span",["-","@config.xMax","@config.xMin"]],["samples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@A",["math/pow","@x","@B"]],["if",["==","@kind","linear"],["+","@A",["*","@B","@x"]],["*","@A",["math/sin",["*","@B","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["dist",["math/sqrt",["/",["array/sum",["array/map",["array/range",0,81],["fn",["i"],["let",[["dY",["-",["object/get",["array/nth","@samples","@i"],"y"],["object/get",["array/nth","@entity.targetSamples","@i"],"y"]]]],["*","@dY","@dY"]]]]],81]]],["allSamples",["array/concat","@samples","@entity.targetSamples"]],["yMinRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/min","@acc",["object/get","@s","y"]]]]],["yMaxRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/max","@acc",["object/get","@s","y"]]]]],["yPad",["*",0.1,["math/max",0.001,["-","@yMaxRaw","@yMinRaw"]]]]],["do",["set","@entity.paramA","@A"],["set","@entity.distance","@dist"],["set","@entity.yMin",["-","@yMinRaw","@yPad"]],["set","@entity.yMax",["+","@yMaxRaw","@yPad"]],["set","@entity.curves",[{"label":"@config.targetLabel","color":"@config.targetColor","samples":"@entity.targetSamples"},{"label":"@config.learnerLabel","color":"@config.learnerColor","samples":"@samples"}]]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}],["emit","PARAMS_CHANGED",{"paramA":"@entity.paramA","paramB":"@entity.paramB","distance":"@entity.distance"}]]},{"from":"idle","to":"idle","event":"SET_PARAM_B","eventId":"evt_PPX7BHE5YR2ZCCM48STNG0YY2P","guard":["and",["==","@entity.active",true],["==","@entity.solved",false]],"effects":[["let",[["A","@entity.paramA"],["B",["math/clamp","@payload.value","@config.paramBMin","@config.paramBMax"]],["kind","@entity.curveKind"],["span",["-","@config.xMax","@config.xMin"]],["samples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@A",["math/pow","@x","@B"]],["if",["==","@kind","linear"],["+","@A",["*","@B","@x"]],["*","@A",["math/sin",["*","@B","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["dist",["math/sqrt",["/",["array/sum",["array/map",["array/range",0,81],["fn",["i"],["let",[["dY",["-",["object/get",["array/nth","@samples","@i"],"y"],["object/get",["array/nth","@entity.targetSamples","@i"],"y"]]]],["*","@dY","@dY"]]]]],81]]],["allSamples",["array/concat","@samples","@entity.targetSamples"]],["yMinRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/min","@acc",["object/get","@s","y"]]]]],["yMaxRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/max","@acc",["object/get","@s","y"]]]]],["yPad",["*",0.1,["math/max",0.001,["-","@yMaxRaw","@yMinRaw"]]]]],["do",["set","@entity.paramB","@B"],["set","@entity.distance","@dist"],["set","@entity.yMin",["-","@yMinRaw","@yPad"]],["set","@entity.yMax",["+","@yMaxRaw","@yPad"]],["set","@entity.curves",[{"label":"@config.targetLabel","color":"@config.targetColor","samples":"@entity.targetSamples"},{"label":"@config.learnerLabel","color":"@config.learnerColor","samples":"@samples"}]]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}],["emit","PARAMS_CHANGED",{"paramA":"@entity.paramA","paramB":"@entity.paramB","distance":"@entity.distance"}]]},{"from":"idle","to":"idle","event":"CHECK","eventId":"evt_9CXZ3C0ZE4FQ23TG00W84ZJWVS","guard":["and",["==","@entity.active",true],["==","@entity.solved",false]],"effects":[["set","@entity.attempts",["+","@entity.attempts",1]],["set","@entity.solved",["if",["<=","@entity.distance","@config.tolerance"],true,false]],["set","@entity.feedback",["if",["<=","@entity.distance","@config.tolerance"],["str/concat","Matched! Distance ",["math/round","@entity.distance",3]," is within tolerance ",["math/round","@config.tolerance",3],"."],["str/concat","Not yet — distance ",["math/round","@entity.distance",3]," is above tolerance ",["math/round","@config.tolerance",3],". Keep tuning."]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}],["emit","GOAL_CHECKED",{"matched":"@entity.solved","distance":"@entity.distance","attempts":"@entity.attempts"}],["if","@entity.solved",["emit","LEARN_ROUND_COMPLETE",{"score":1,"total":1}],null]]},{"from":"idle","to":"idle","event":"RESET","eventId":"evt_YQYJM47E77Q3KZKM3CXB5TTH0P","guard":["==","@entity.active",true],"effects":[["let",[["A","@config.paramADefault"],["B","@config.paramBDefault"],["kind","@entity.curveKind"],["span",["-","@config.xMax","@config.xMin"]],["samples",["array/map",["array/range",0,81],["fn",["i"],["let",[["x",["+","@config.xMin",["*","@i",["/","@span",80]]]],["yVal",["if",["==","@kind","power"],["*","@A",["math/pow","@x","@B"]],["if",["==","@kind","linear"],["+","@A",["*","@B","@x"]],["*","@A",["math/sin",["*","@B","@x"]]]]]]],{"x":"@x","y":"@yVal"}]]]],["dist",["math/sqrt",["/",["array/sum",["array/map",["array/range",0,81],["fn",["i"],["let",[["dY",["-",["object/get",["array/nth","@samples","@i"],"y"],["object/get",["array/nth","@entity.targetSamples","@i"],"y"]]]],["*","@dY","@dY"]]]]],81]]],["allSamples",["array/concat","@samples","@entity.targetSamples"]],["yMinRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/min","@acc",["object/get","@s","y"]]]]],["yMaxRaw",["array/reduce","@allSamples",["object/get",["array/nth","@allSamples",0],"y"],["fn",["acc","s"],["math/max","@acc",["object/get","@s","y"]]]]],["yPad",["*",0.1,["math/max",0.001,["-","@yMaxRaw","@yMinRaw"]]]]],["do",["set","@entity.paramA","@A"],["set","@entity.paramB","@B"],["set","@entity.distance","@dist"],["set","@entity.attempts",0],["set","@entity.solved",false],["set","@entity.feedback",""],["set","@entity.yMin",["-","@yMinRaw","@yPad"]],["set","@entity.yMax",["+","@yMaxRaw","@yPad"]],["set","@entity.curves",[{"label":"@config.targetLabel","color":"@config.targetColor","samples":"@entity.targetSamples"},{"label":"@config.learnerLabel","color":"@config.learnerColor","samples":"@samples"}]]]],["set","@entity.resultRow",["array/concat",["if","@entity.solved",[{"type":"badge","variant":"success","label":"Solved"}],[]],[{"type":"typography","variant":"caption","content":"@entity.feedback"}]]],["render-ui","main",{"type":"box","padding":"md","children":[{"type":"stack","direction":"vertical","gap":"md","children":[{"type":"stack","direction":"horizontal","justify":"between","align":"start","gap":"md","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"h4","content":"@entity.title"},["if",["==","@config.summary",""],null,{"type":"typography","variant":"body2","color":"muted","content":"@config.summary"}]]},{"type":"badge","label":["if","@entity.solved","Solved",["if",[">","@entity.attempts",0],"Try again","Tuning"]],"variant":["if","@entity.solved","success",["if",[">","@entity.attempts",0],"warning","neutral"]]}]},{"type":"stack","direction":"horizontal","align":"center","gap":"sm","wrap":true,"children":[{"type":"button","action":"CHECK","label":"@config.checkLabel","icon":"check","variant":"primary","disabled":["if","@entity.solved",true,false]},{"type":"button","action":"RESET","label":"Reset","icon":"rotate-ccw","variant":"ghost"},{"type":"typography","variant":"caption","color":"muted","content":["if","@config.showLiveDistance",["str/concat","Distance from target: ",["math/round","@entity.distance",3]," · attempts: ",["str/concat","","@entity.attempts"]],["str/concat","Attempts: ",["str/concat","","@entity.attempts"]]]}]},{"type":"math-canvas","keyMap":{"Space":"CHECK","KeyR":"RESET"},"width":"@config.width","height":"@config.height","title":"","xMin":"@config.xMin","xMax":"@config.xMax","yMin":"@entity.yMin","yMax":"@entity.yMax","showAxes":"@config.showAxes","showGrid":"@config.showGrid","gridStep":"@config.gridStep","curves":"@entity.curves","points":[],"vectors":[],"shapes":[],"interactive":false,"animate":false},{"type":"stack","direction":"vertical","gap":"sm","children":[{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramALabel",": ",["math/round","@entity.paramA",2]]},{"type":"range-slider","min":"@config.paramAMin","max":"@config.paramAMax","step":"@config.paramAStep","value":"@entity.paramA","showTooltip":true,"action":"SET_PARAM_A"}]},{"type":"stack","direction":"vertical","gap":"xs","children":[{"type":"typography","variant":"caption","content":["str/concat","@entity.paramBLabel",": ",["math/round","@entity.paramB",2]]},{"type":"range-slider","min":"@config.paramBMin","max":"@config.paramBMax","step":"@config.paramBStep","value":"@entity.paramB","showTooltip":true,"action":"SET_PARAM_B"}]}]},{"type":"typography","variant":"body","content":"@entity.goalText"},{"type":"typography","variant":"caption","color":"muted","content":"@entity.feedback"}]}]}],["emit","GOAL_RESET",{"attempts":0}]]}]},"config":{"paramBStep":{"type":"number","default":0.1,"label":"Parameter B Step","tier":"presentation"},"rosterSource":{"type":"string","default":"config","label":"Roster Source","description":"Where the problem definition (goalText, curveKind, targetA, targetB) comes from: config reads those knobs at INIT; event waits for ROSTER_LOADED and takes them from its payload.","tier":"domain","values":["config","event"]},"paramALabel":{"type":"string","default":"A","label":"Parameter A Label","description":"Display label for the first parameter.","tier":"presentation"},"summary":{"type":"string","default":"","label":"Concept","description":"One line under the title saying what the learner is looking at (keep it under ~65 characters). Empty shows no line.","tier":"presentation"},"width":{"type":"number","default":600,"label":"Width","tier":"presentation"},"targetLabel":{"type":"string","default":"Target","label":"Target Label","tier":"presentation"},"goalText":{"type":"string","default":"Tune the two sliders until your curve matches the target curve, then press Check.","label":"Goal Text","description":"One-sentence statement of the inverse problem the learner must solve.","tier":"domain"},"showAxes":{"type":"boolean","default":true,"label":"Show Axes","tier":"presentation"},"targetB":{"type":"number","default":1.5,"label":"Target B","description":"Hidden second parameter of the target curve the learner must recover.","tier":"domain"},"learnerLabel":{"type":"string","default":"Yours","label":"Learner Label","tier":"presentation"},"paramBDefault":{"type":"number","default":1,"label":"Parameter B Default","description":"Starting value of the learner's second parameter.","tier":"domain"},"paramAMin":{"type":"number","default":-5,"label":"Parameter A Min","tier":"domain"},"targetA":{"type":"number","default":2.5,"label":"Target A","description":"Hidden first parameter of the target curve the learner must recover.","tier":"domain"},"matchMode":{"type":"string","default":"","label":"Match Mode","description":"When composed behind a lab router, the MODE_SELECTED mode value this instrument responds to. Empty string means standalone — render immediately on INIT (or on ROSTER_LOADED when rosterSource is event).","tier":"presentation"},"tolerance":{"type":"number","default":0.35,"label":"Tolerance","description":"Maximum RMS distance between learner and target curves that still counts as a match.","tier":"domain"},"showLiveDistance":{"type":"boolean","default":true,"label":"Show Live Distance","description":"When true the RMS distance updates live as the learner tunes (warmer/colder); when false only attempts are shown, for a harder variant.","tier":"domain"},"height":{"type":"number","default":400,"label":"Height","tier":"presentation"},"paramBMax":{"type":"number","default":5,"label":"Parameter B Max","tier":"domain"},"showGrid":{"type":"boolean","default":true,"label":"Show Grid","tier":"presentation"},"paramAStep":{"type":"number","default":0.1,"label":"Parameter A Step","tier":"presentation"},"paramBMin":{"type":"number","default":-5,"label":"Parameter B Min","tier":"domain"},"paramBLabel":{"type":"string","default":"B","label":"Parameter B Label","description":"Display label for the second parameter.","tier":"presentation"},"checkLabel":{"type":"string","default":"Check","label":"Check Label","tier":"presentation"},"curveKind":{"type":"string","default":"sine","label":"Curve Kind","description":"Curve family both curves are drawn from: power (y = A·xᴮ), linear (y = A + B·x), or sine (y = A·sin(B·x)).","synonyms":"curve family, power law, linear function, sine wave, function type","tier":"domain"},"xMin":{"type":"number","default":0,"label":"X Min","tier":"presentation"},"paramADefault":{"type":"number","default":1,"label":"Parameter A Default","description":"Starting value of the learner's first parameter.","tier":"domain"},"paramAMax":{"type":"number","default":5,"label":"Parameter A Max","tier":"domain"},"xMax":{"type":"number","default":10,"label":"X Max","tier":"presentation"},"learnerColor":{"type":"string","default":"series-2","label":"Learner Color","tier":"presentation"},"gridStep":{"type":"number","default":1,"label":"Grid Step","tier":"presentation"},"targetColor":{"type":"string","default":"guide","label":"Target Color","tier":"presentation"},"title":{"type":"string","default":"Goal Seek","label":"Title","description":"Title shown above the canvas.","tier":"presentation"}},"scope":"instance"}],"pages":[{"name":"GoalSeekPage","id":"pag_9BJ87ZCEYT7FDA9GNY9NP5PNXD","path":"/learn-goal-seek","traits":[{"ref":"GoalSeekSim","refId":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"}]}],"types":{"GoalSeekCurve":[{"name":"label","type":"string"},{"name":"color","type":"string"},{"name":"samples","type":"[object]","required":true,"properties":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]}],"GoalSeekCurveSample":[{"name":"x","type":"number","required":true},{"name":"y","type":"number","required":true}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_QMVZ86Q5D3JPHWNVWDE7YZQAV6":{"id":"ent_QMVZ86Q5D3JPHWNVWDE7YZQAV6","kind":"entity","bakedName":"GoalSeekScene","curName":"GoalSeekScene","renames":[],"owner":"workspace"},"evt_3NS3C93G8RR4C9MQ1AXEARQPMW":{"id":"evt_3NS3C93G8RR4C9MQ1AXEARQPMW","kind":"event","bakedName":"GOAL_RESET","curName":"GOAL_RESET","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_61ZBRXTRXYCEZ14RC0M3JZ2QGP":{"id":"evt_61ZBRXTRXYCEZ14RC0M3JZ2QGP","kind":"event","bakedName":"SET_PARAM_A","curName":"SET_PARAM_A","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_6YJQFER7VY3XZDMBBBR3NJAN3K":{"id":"evt_6YJQFER7VY3XZDMBBBR3NJAN3K","kind":"event","bakedName":"GOAL_CHECKED","curName":"GOAL_CHECKED","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_9CXZ3C0ZE4FQ23TG00W84ZJWVS":{"id":"evt_9CXZ3C0ZE4FQ23TG00W84ZJWVS","kind":"event","bakedName":"CHECK","curName":"CHECK","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_DK9ST1H9BZMNZXMDE104WSH6WY":{"id":"evt_DK9ST1H9BZMNZXMDE104WSH6WY","kind":"event","bakedName":"MODE_SELECTED","curName":"MODE_SELECTED","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_EXSXRNCZMJFT93EZ3185J9EGG4":{"id":"evt_EXSXRNCZMJFT93EZ3185J9EGG4","kind":"event","bakedName":"ROSTER_LOADED","curName":"ROSTER_LOADED","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_KTRQT9Z22VH1DXTRWT9VAWP8JS":{"id":"evt_KTRQT9Z22VH1DXTRWT9VAWP8JS","kind":"event","bakedName":"LEARN_ROUND_COMPLETE","curName":"LEARN_ROUND_COMPLETE","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_MJBP345X5WYJYDAWXYRHE5Y4PX":{"id":"evt_MJBP345X5WYJYDAWXYRHE5Y4PX","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_PPX7BHE5YR2ZCCM48STNG0YY2P":{"id":"evt_PPX7BHE5YR2ZCCM48STNG0YY2P","kind":"event","bakedName":"SET_PARAM_B","curName":"SET_PARAM_B","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_R5PF3PVRJ2W91FAY5BGDDE3HF7":{"id":"evt_R5PF3PVRJ2W91FAY5BGDDE3HF7","kind":"event","bakedName":"PARAMS_CHANGED","curName":"PARAMS_CHANGED","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"evt_YQYJM47E77Q3KZKM3CXB5TTH0P":{"id":"evt_YQYJM47E77Q3KZKM3CXB5TTH0P","kind":"event","bakedName":"RESET","curName":"RESET","renames":[],"owner":"workspace","parent":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS"},"orb_G9ANEW2K6R9KCD90V57R420QWF":{"id":"orb_G9ANEW2K6R9KCD90V57R420QWF","kind":"orbital","bakedName":"GoalSeekOrbital","curName":"GoalSeekOrbital","renames":[],"owner":"workspace"},"pag_9BJ87ZCEYT7FDA9GNY9NP5PNXD":{"id":"pag_9BJ87ZCEYT7FDA9GNY9NP5PNXD","kind":"page","bakedName":"GoalSeekPage","curName":"GoalSeekPage","renames":[],"owner":"workspace"},"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS":{"id":"trt_FSQ989EPT7BD3YMZ5VG64NJ5PS","kind":"trait","bakedName":"GoalSeekSim","curName":"GoalSeekSim","renames":[],"owner":"workspace"}}}}
|