pineforge-codegen 0.10.1__tar.gz → 0.10.3__tar.gz
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.
- pineforge_codegen-0.10.3/.claude/settings.json +15 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/.github/workflows/gate.yml +30 -8
- pineforge_codegen-0.10.3/.github/workflows/promote-baseline.yml +235 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/.github/workflows/release.yml +1 -1
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/.gitignore +2 -1
- pineforge_codegen-0.10.3/AGENTS.md +467 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/PKG-INFO +2 -2
- pineforge_codegen-0.10.3/VERSION +1 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/docs/codegen-coverage-gaps.md +52 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/codegen/base.py +207 -19
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/codegen/emit_top.py +73 -20
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/codegen/security.py +160 -0
- pineforge_codegen-0.10.3/pineforge_codegen/codegen/ta.py +1005 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/codegen/tables.py +140 -34
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/codegen/types.py +6 -1
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/codegen/visit_call.py +144 -72
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/codegen/visit_expr.py +12 -2
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/support_checker.py +68 -4
- pineforge_codegen-0.10.3/tests/test_anchor_tf_change.py +38 -0
- pineforge_codegen-0.10.3/tests/test_anchor_time.py +58 -0
- pineforge_codegen-0.10.3/tests/test_anchor_vwap.py +75 -0
- pineforge_codegen-0.10.3/tests/test_array_bounds_insert_fill_slice.py +277 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_array_checked_access.py +4 -1
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_calc_on_order_fills_codegen.py +26 -11
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_callable_series_param_types.py +10 -6
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_audit_fixes.py +52 -1
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_new.py +105 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_validation_fixes.py +120 -34
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_compile_smoke.py +21 -17
- pineforge_codegen-0.10.3/tests/test_lazy_edge_ta_every_bar.py +685 -0
- pineforge_codegen-0.10.3/tests/test_lazy_source_clock.py +266 -0
- pineforge_codegen-0.10.3/tests/test_lazy_source_clock_runtime.py +219 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_method_written_callsite_lifecycle.py +6 -3
- pineforge_codegen-0.10.3/tests/test_security_lazy_ta_under_conditionals.py +266 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker.py +71 -0
- pineforge_codegen-0.10.3/tests/test_udf_series_parameter_history.py +177 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_vwap_tuple_unpack.py +1 -1
- pineforge_codegen-0.10.1/VERSION +0 -1
- pineforge_codegen-0.10.1/pineforge_codegen/codegen/ta.py +0 -723
- pineforge_codegen-0.10.1/tests/test_lazy_saturated_roc.py +0 -198
- pineforge_codegen-0.10.1/tests/test_lazy_saturated_roc_runtime.py +0 -270
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/.github/dependabot.yml +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/.github/workflows/publish-pyodide.yml +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/.github/workflows/test.yml +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/CLAUDE.md +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/LEGAL.md +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/LICENSE +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/PYODIDE_TARGET +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/README.md +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/gate/compare.mjs +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/gate/glue.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/gate/oracle.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/gate/run-gate.mjs +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/gate/selftest.mjs +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/npm/README.md +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/npm/index.mjs +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/npm/package.json +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/package-lock.json +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/package.json +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/__init__.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/analyzer/__init__.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/analyzer/base.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/analyzer/call_handlers.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/analyzer/contracts.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/analyzer/diagnostics.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/analyzer/tables.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/analyzer/types.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/ast_nodes.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/codegen/__init__.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/codegen/drawing.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/codegen/helpers.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/codegen/helpers_syminfo.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/codegen/input.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/codegen/visit_stmt.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/errors.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/finite_ta_length.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/lexer.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/method_binding.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/parser.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/pragmas.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/signatures.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/symbols.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/tokens.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pineforge_codegen/tv_input_choices.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/pyproject.toml +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/scripts/build-npm-package.mjs +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/scripts/dump-tables.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/scripts/worker-template.mjs +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/__init__.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/_compile.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/fixtures/matrix_eigen_pca.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/const_ns_plot_style_free.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/const_ns_shape_free.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/export_func.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/footprint_new.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/hard_reject_dividends.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/matrix_unknown_elem.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/multi_error_one_line.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/sec_tf_invalid.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/unknown_color.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/unknown_math.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/unknown_str.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/unknown_strategy_fn.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/unknown_syminfo.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/err/unknown_ta.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/AAPL__session-ismarket-nyse-rth-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/AAPL__time-tradingday-daily-reset-counter-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/QQQ__session-ispremarket-nasdaq-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/SPY__session-firstbar-vwap-anchor-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/SPY__session-lastbar-flatten-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/chart_bg_color.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/crypto-htf__mtf-htf-monthly-ema-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/crypto-leverage__leverage-margin-call-perp-5x-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/divergent_last_bar_index.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/forex__symbol-fx-5dp-eurusd-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/futures__symbol-futures-pointvalue-es-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/tutorial__macd__strategy.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/tutorial__mtf__strategy_htf.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/tutorial__mtf__strategy_ltf.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/us-equity__symbol-equity-rth-gaps-aapl-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/us-equity__us-equity-exchange-tz-intraday-cap-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__analyzer-parity-choch-bos-isolator-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__analyzer-parity-edge-margin-50-pct-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__analyzer-parity-percent-of-equity-sizing-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__analyzer-parity-small-equity-fraction-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__analyzer-parity-stop-limit-timing-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__analyzer-self-test-multi-mode-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__anomaly-equity-mirror-strategy-equity-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__barstate-isconfirmed-magnifier-off-01b.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__barstate-isconfirmed-magnifier-on-01a.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__bracket-atr-trail-series-int-points-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__bracket-atr-trailing-stop-state-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__bracket-entry-exit-same-pass-attach-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__bracket-exit-stop-limit-trail-same-bar-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__bracket-exit-three-way-set-once-entry-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__bracket-exit-tp-sl-fixed-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__bracket-narrow-stop-limit-with-trail8-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__bracket-partial-exit-qty-percent-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__bracket-same-id-exit-replace-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__bracket-tp-sl-oca-reduce-isolate-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__bracket-trail-points-no-offset-explicit-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__bracket-trail-points-with-offset-only-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__bracket-trailing-activation-offset-path-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__cap-max-intraday-filled-orders-isolate-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__cap-risk-gates-allow-max-intraday-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-4emarsi-integration-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-4emarsi-quad-ema-stack-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-4emarsi-rsi-pullback-latch-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-4emarsi-session-window-nbar-exit-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-boscurv-integration-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-boscurv-linreg-slope-channel-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-boscurv-pivot-bos-trigger-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-bracket-cap-range-pending-stop-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-ies-adx-regime-classify-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-ies-bb-kc-squeeze-release-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-ies-cooldown-daily-cap-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-ies-equity-feedback-sizing-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-ies-integration-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-ies-pivot-liquidity-sweep-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-ies-pressure-gauge-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-ies-rsi-macd-momentum-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-ies-three-ema-bias-score-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-kanuck-calc-on-every-tick-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-kanuck-integration-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-kanuck-kama-state-recurrence-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-kanuck-max-bars-back-500-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-kkb-ema-atr-breakout-band-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-kkb-integration-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-kkb-kalman-filter-1d-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-kkb-margin-100-pct-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-liqsweep-integration-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-liqsweep-pivot-hh-ll-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-liqsweep-wait-one-continuation-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-liqsweep-wick-pierce-close-back-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-marketshift-integration-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-marketshift-pivot-state-machine-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-marketshift-rolling-highest-lowest-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-marketshift-state-edge-detector-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-scalping-fast-ma-cross-trigger-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-scalping-integration-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-scalping-tight-tp-sl-points-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-trendmaster-integration-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-trendmaster-line-new-projection-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-trendmaster-pivot-anchored-bracket-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-trendmaster-three-tier-ema-state-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-trendmaster-trend-momentum-structure-gate-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-vcp-cumulative-volume-delta-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-vcp-fvg-active-zones-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-vcp-integration-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-vcp-manual-adx-regime-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-vcp-pivot-strength-5-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-vcp-rsi-smooth-divergence-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-vcp-session-tz-newyork-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-vcp-vol-zscore-anomaly-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-wunderscalper-alert-templates-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-wunderscalper-explicit-reverse-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__composite-wunderscalper-integration-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__input-source-runtime-override-high-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__input-source-subscript-hl2-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ltf-bool-array-bull-majority-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ltf-numeric-float-ratio15-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__magnifier-tick-dist-endpoints-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__magnifier-tick-dist-endpoints-rsi-cross-08a.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__magnifier-tick-dist-volume-weighted-on-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__matrix-bool-mask-explicit-utc-tz-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__matrix-bool-mask-no-transpose-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__matrix-bool-mask-transpose-roundtrip-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__matrix-bool-regime-mask-24x7-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__matrix-covariance-eigen-pca-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__matrix-eigen-rank-deficient-cov-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__max-bars-back-function-call-deep-history-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-daily-array-median-percentrank-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-daily-ema26-warmup-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-daily-prev-high-break-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-dual-tf-60-240-rising-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-htf-60-close-change-baseline-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-htf-60-close-roll-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-htf-60-gaps-on-roll-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-htf-60-rsi14-inside-security-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-htf-60-sma20-inside-security-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-htf-60-volume-spike-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-htf-confluence-manual-trail-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-htf-confluence-static-bracket-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-htf-weekly-sma-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-roll-state-60-240-d-minimal-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-triple-tf-close-confluence-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__mtf-triple-tf-macd-hist-confluence-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__na-deep-history-int-na-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__na-nz-fixnan-history-chain-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__oca-exit-bracket-internal-cancel-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__oca-multi-bracket-isolation-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__oca-raw-strategy-order-reduce-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-close-all-cancel-all-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-close-immediate-vs-next-bar-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-cross-entry-cancel-same-pass-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-cross-entry-close-same-pass-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-cross-exit-close-same-pass-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-deferred-flip-guaranteed-gap-stops-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-deferred-flip-pooc-cross-bar-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-dual-four-bar-stop-no-close-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-dual-side-same-id-stop-no-cancel-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-dual-stop-both-touch-priority-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-dual-stop-cancel-rotation-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-dual-stop-far-only-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-dual-stop-near-only-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-dual-stop-open-high-first-path-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-dual-stop-open-low-first-path-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-dual-stop-open-tie-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-dual-stop-source-order-long-first-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-dual-stop-source-order-short-first-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-entry-implicit-reversal-exit-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-flip-stop-no-paired-close-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-market-close-fill-basis-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-one-side-four-bar-far-opposite-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-opposite-entry-close-same-pass-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-percent-equity-cash-commission-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-process-on-close-false-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-process-on-close-true-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-range-expansion-pending-stop-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-same-id-entry-close-same-bar-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-same-id-market-entry-repeat-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-same-id-stop-after-flat-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-same-id-stop-cross-before-modify-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-same-id-stop-minute-zero-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-same-id-stop-modification-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-same-id-stop-raise-only-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-same-id-stop-window-four-bars-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-stale-stop-after-close-no-cancel-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-stop-cancel-no-regime-close-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-stop-entry-cancel-opposite-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-stop-entry-reversal-grouping-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__order-stop-entry-touch-boundary-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__pyramid-cash-fractional-commission-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__pyramid-close-id-grouping-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__pyramid-deferred-flip-close-all-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__pyramid-flip-stop-pyramiding-2-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__recompute-alma-sar-corr-magnifier-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__recompute-mtf-rsi-macd-bb-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__risk-max-contracts-held-gate-pyramid-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__session-hour-minute-pulse-filter-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__session-ny-spring-forward-dst-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__stats-eventrades-zero-pnl-count-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-accdist-ema-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-bb-kc-squeeze-breakout-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-bb-rsi-mean-reversion-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-cci-threshold-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-chandelier-exit-direction-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-closedtrades-risk-introspection-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-cmo-9-zero-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-cog-10-signal-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-dmi-adx-di-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-donchian-channel-breakout-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-dual-ma-switch-dispatch-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-dual-thrust-open-anchored-range-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-elder-ray-bull-bear-power-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-ema-ribbon-stack-transition-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-engulfing-candle-pattern-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-highestbars-lowestbars-breakout-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-hma-55-close-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-hma-fast-slow-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-inside-bar-engulfing-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-kama-style-efficiency-ratio-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-keltner-channel-break-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-linreg-stdev-channel-revert-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-macd-12-26-9-line-signal-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-macd-histogram-reversal-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-macd-line-gt-signal-continuous-state-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-map-regime-threshold-lookup-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-median-vs-ema-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-mfi-14-bands-20-80-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-momentum-roc-zero-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-multi-indicator-score-composite-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-nvi-pvi-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-obv-ema-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-percentrank-mean-reversion-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-pivot-array-unshift-pop-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-pivot-atr-stop-target-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-pivot-confirmed-break-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-pivot-point-levels-break-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-pvt-ema-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-range-filter-var-band-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-rci-14-zero-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-rsi-bb-self-bands-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-rsi-ema-signal-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-rsi-macd-and-continuous-state-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-rsi14-bands-30-70-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-rsi14-cross-50-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-rsi14-gt-50-continuous-state-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-rsi14-gt60-lt45-no-matrix-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-sar-flip-entry-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-sma-152-close-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-sma-dual-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-stdev-sma-expansion-break-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-stoch-slow-k-d-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-stochastic-rsi-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-str-match-regex-filter-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-supertrend-adx-filter-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-supertrend-direction-flip-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-triple-sma-stack-latch-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-tsi-25-13-signal-cross-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-volume-spike-atr-breakout-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-vwma-vs-sma-divergence-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__ta-wpr-14-bands-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__timeframe-main-period-self-adaptive-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-calls-sibling-cumulative-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-default-param-kwargs-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-drives-strategy-entry-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-extra-primitive-args-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-feeds-strategy-exit-prices-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-in-for-loop-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-in-if-else-branch-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-in-switch-arms-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-in-while-loop-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-mutating-self-ref-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-on-array-element-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-reads-strategy-state-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-receives-ta-series-param-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-scalar-return-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-tuple-return-destructure-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-udt-return-from-func-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-uses-history-globals-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-uses-math-funcs-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-uses-na-nz-fixnan-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-var-instance-streak-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-method-windowed-method-chain-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__udt-regime-stack-stress-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__vwap-bands-breakout-1sigma-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/gate-corpus/ok/validation__vwap-bands-mean-reversion-2sigma-01.pine +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/golden/matrix_eigen_pca.cpp +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_analyzer.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_analyzer_matrix_inference.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_analyzer_ta_return_types.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_array_empty_aggregates.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_array_terminal_returns.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_callable_ta_forwarded_length.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_callable_var_first_reach.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_determinism.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_drawing_data.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_drawing_handles.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_fallthrough_guards.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_golden.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_input_getters.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_matrix_typed.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_string_escape.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_ta_derived_length.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_ta_finite_choice_length.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_codegen_ta_stable_var_literal.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_collection_scope_isolation.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_compile_corpus.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_errors.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_extract_inputs.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_float_relational_runtime.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_glue_smoke.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_hungpixi_regressions.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_import_all.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_input_time_int64.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_int64_reassign_promotion.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_int64_time_storage.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_lexer.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_map_call_diagnostics.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_map_param_methods.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_map_terminal_returns.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_math_sign_na_codegen.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_matrix_identity_checkpoint.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_matrix_na_lifecycle.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_matrix_void_method_return.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_method_receiver_types.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_na_reassign_retype.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_na_relational_lowering.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_official_surface.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_parser.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_persistent_callable_owner_state.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_pinemap_boundaries_and_order.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_pinemap_cold_followups_history.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_pinemap_semantics.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_pinemap_temp_receiver_var.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_runtime_var_initialization.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_security_helper_local_var.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_security_math_reducer.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_security_ohlc_hist_is_complete.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_security_ta_input_history_offset.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_security_tf_input_derived.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_security_tf_literal.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_security_tuple_interactions.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_signatures.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_strategy_close_callsite_tokens.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker_chart_visible_bar_time.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker_color_cast.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker_const_namespaces.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker_dividends_earnings.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker_footprint.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker_input_color.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker_input_source.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker_matrix.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker_security_adjustment.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker_syminfo_gap_fields.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker_timeframe_from_seconds.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker_varip.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_support_checker_volume_row.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_symbols.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_ta_official_surface.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_transpile_division.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_transpile_enum_order.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_transpile_pf_trace.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_transpile_tr_handle_na.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_transpiler_matrix_kwargs.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_typed_void_method_precedence.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_typespec_matrix.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_udt_drawing_field_cleanup.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_udt_lvalue_alias.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_udt_na_lifecycle.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_udt_object_identity.py +0 -0
- {pineforge_codegen-0.10.1 → pineforge_codegen-0.10.3}/tests/test_unsupported_reporting.py +0 -0
|
@@ -4,18 +4,16 @@ name: Pyodide Gate
|
|
|
4
4
|
# native CPython on every corpus input (success + failure). Heavier than the
|
|
5
5
|
# unit matrix (loads Pyodide), so: on demand, nightly, and on PRs that touch the
|
|
6
6
|
# gate itself. It does NOT block releases yet — that wiring is Phase 3.
|
|
7
|
+
# `gate` is a required status check on main, so this workflow runs on EVERY
|
|
8
|
+
# pull request and reports; the path filter lives in-job: when a PR touches no
|
|
9
|
+
# gate-relevant path the heavy steps are skipped and the check is trivially
|
|
10
|
+
# green. (A trigger-level paths: filter would leave path-untouching PRs
|
|
11
|
+
# BLOCKED forever -- the required context never reports.)
|
|
7
12
|
on:
|
|
8
13
|
workflow_dispatch:
|
|
9
14
|
schedule:
|
|
10
15
|
- cron: "27 5 * * *" # nightly 05:27 UTC
|
|
11
16
|
pull_request:
|
|
12
|
-
paths:
|
|
13
|
-
- "gate/**"
|
|
14
|
-
- "tests/gate-corpus/**"
|
|
15
|
-
- "package.json"
|
|
16
|
-
- "package-lock.json"
|
|
17
|
-
- ".github/workflows/gate.yml"
|
|
18
|
-
- "pineforge_codegen/**"
|
|
19
17
|
|
|
20
18
|
permissions:
|
|
21
19
|
contents: read
|
|
@@ -31,28 +29,52 @@ jobs:
|
|
|
31
29
|
PYTHONHASHSEED: "0"
|
|
32
30
|
steps:
|
|
33
31
|
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
32
|
+
with:
|
|
33
|
+
fetch-depth: 0
|
|
34
|
+
|
|
35
|
+
- name: Detect gate-relevant changes
|
|
36
|
+
id: changes
|
|
37
|
+
env:
|
|
38
|
+
BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
|
39
|
+
run: |
|
|
40
|
+
set -euo pipefail
|
|
41
|
+
if [ "${{ github.event_name }}" != "pull_request" ]; then
|
|
42
|
+
echo "relevant=true" >> "$GITHUB_OUTPUT"; exit 0
|
|
43
|
+
fi
|
|
44
|
+
if git diff --name-only "$BASE_SHA...HEAD" \
|
|
45
|
+
| grep -qE '^(gate/|tests/gate-corpus/|package(-lock)?\.json$|\.github/workflows/gate\.yml$|pineforge_codegen/)'; then
|
|
46
|
+
echo "relevant=true" >> "$GITHUB_OUTPUT"
|
|
47
|
+
else
|
|
48
|
+
echo "::notice::no gate-relevant paths changed — gate is trivially green"
|
|
49
|
+
echo "relevant=false" >> "$GITHUB_OUTPUT"
|
|
50
|
+
fi
|
|
34
51
|
|
|
35
52
|
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
53
|
+
if: steps.changes.outputs.relevant == 'true'
|
|
36
54
|
with:
|
|
37
55
|
python-version: "3.14"
|
|
38
56
|
|
|
39
57
|
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
|
58
|
+
if: steps.changes.outputs.relevant == 'true'
|
|
40
59
|
with:
|
|
41
60
|
node-version: "22"
|
|
42
61
|
|
|
43
62
|
- name: Install codegen (native oracle) + node deps
|
|
63
|
+
if: steps.changes.outputs.relevant == 'true'
|
|
44
64
|
run: |
|
|
45
65
|
python -m pip install -e .
|
|
46
66
|
npm ci
|
|
47
67
|
|
|
48
68
|
- name: Selftest (comparator catches divergences)
|
|
69
|
+
if: steps.changes.outputs.relevant == 'true'
|
|
49
70
|
run: npm run gate:selftest
|
|
50
71
|
|
|
51
72
|
- name: Run differential gate (full corpus)
|
|
73
|
+
if: steps.changes.outputs.relevant == 'true'
|
|
52
74
|
run: npm run gate:full
|
|
53
75
|
|
|
54
76
|
- name: Upload release.json (derived versions, for Phase 3 handoff)
|
|
55
|
-
if: always()
|
|
77
|
+
if: always() && steps.changes.outputs.relevant == 'true'
|
|
56
78
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
57
79
|
with:
|
|
58
80
|
name: release-json
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# PineForge parity campaign — post-merge baseline promotion.
|
|
2
|
+
#
|
|
3
|
+
# Install into BOTH product repos, unchanged (the repo axis is auto-detected):
|
|
4
|
+
# pineforge-engine/.github/workflows/promote-baseline.yml
|
|
5
|
+
# pineforge-codegen-oss/.github/workflows/promote-baseline.yml
|
|
6
|
+
#
|
|
7
|
+
# On a merged PR it advances the campaign baseline one axis to the merged
|
|
8
|
+
# composite, reusing the snapshot from the pr-gate run that already cleared
|
|
9
|
+
# it. It promotes ONLY when the merge is exact-head (the gated commit's tree is
|
|
10
|
+
# now on the base branch), CI is green on that commit, and a PASS verdict binds
|
|
11
|
+
# the full (engine, codegen) pair. Otherwise it exits green without promoting.
|
|
12
|
+
#
|
|
13
|
+
# The gate logic (exact-head + CI-green + baseline-promote.mjs) is unchanged;
|
|
14
|
+
# only the transport to the campaign plane changed. The plane is now GCP: the
|
|
15
|
+
# promotion reads the active baseline and the gate ledger from the Postgres
|
|
16
|
+
# registry through a cloud-sql-proxy, streams the pinned documents from the
|
|
17
|
+
# GCS evidence bucket, and appends the new baseline row — authenticated by
|
|
18
|
+
# workload identity federation, so no long-lived GCP key lives in the repo.
|
|
19
|
+
#
|
|
20
|
+
# Required in each product repo:
|
|
21
|
+
# secrets PINEFORGE_APP_ID + PINEFORGE_APP_PRIVATE_KEY the org App (already
|
|
22
|
+
# present for release.yml) — the job mints a short-lived, read-only
|
|
23
|
+
# token from it to check out the private pineforge-workflow repo, so
|
|
24
|
+
# NO personal access token is needed
|
|
25
|
+
# var WORKFLOW_REPO optional override, defaults to pineforge-4pass/pineforge-workflow
|
|
26
|
+
# var GCP_WORKLOAD_IDENTITY_PROVIDER
|
|
27
|
+
# the full provider resource name — terraform/gcp output
|
|
28
|
+
# `github_workload_identity_provider`
|
|
29
|
+
# var GCP_SERVICE_ACCOUNT
|
|
30
|
+
# the dedicated promotion service account this workflow impersonates
|
|
31
|
+
# through that provider — terraform/gcp output
|
|
32
|
+
# `github_promotion_service_account`. Terraform binds the repo-pinned
|
|
33
|
+
# federated identity to it (roles/iam.workloadIdentityUser) and
|
|
34
|
+
# grants it exactly what the steps below use, and nothing else:
|
|
35
|
+
# Cloud SQL Client on the registry instance (the proxy this job
|
|
36
|
+
# starts), accessor on secret pineforge-registry-db (the DSN
|
|
37
|
+
# password baseline-promote resolves), and objectViewer on the
|
|
38
|
+
# evidence bucket (the three pinned documents it streams). No
|
|
39
|
+
# Cloud Run role: this workflow executes no job. Nothing is left for
|
|
40
|
+
# an operator to grant by hand.
|
|
41
|
+
#
|
|
42
|
+
# This file's PATH is part of the identity: the WIF provider admits only
|
|
43
|
+
# `<owner>/<repo>/.github/workflows/promote-baseline.yml@…`, so installing it
|
|
44
|
+
# under another name mints no token — and no other workflow in the repo can
|
|
45
|
+
# mint one either.
|
|
46
|
+
#
|
|
47
|
+
# (Optionally pin WORKFLOW_REF, defaults to main; and PINEFORGE_EVIDENCE_BUCKET,
|
|
48
|
+
# defaults to pineforge-workflow-evidence.)
|
|
49
|
+
|
|
50
|
+
name: promote-baseline
|
|
51
|
+
|
|
52
|
+
on:
|
|
53
|
+
pull_request:
|
|
54
|
+
types: [closed]
|
|
55
|
+
# Manual re-fire for a merge whose pull_request event already passed (e.g. a
|
|
56
|
+
# PR merged before this workflow was installed, or a rebase-merge whose PR
|
|
57
|
+
# head was orphaned): pass the exact commit now on the base branch.
|
|
58
|
+
workflow_dispatch:
|
|
59
|
+
inputs:
|
|
60
|
+
merge_commit:
|
|
61
|
+
description: "40-hex commit now on the base branch to promote"
|
|
62
|
+
required: true
|
|
63
|
+
pr_number:
|
|
64
|
+
description: "the PR number"
|
|
65
|
+
required: true
|
|
66
|
+
pr_url:
|
|
67
|
+
description: "the PR url (recorded in the merge receipt)"
|
|
68
|
+
required: true
|
|
69
|
+
merged_at:
|
|
70
|
+
description: "ISO-8601 merge time"
|
|
71
|
+
required: true
|
|
72
|
+
|
|
73
|
+
permissions:
|
|
74
|
+
contents: read
|
|
75
|
+
# "Confirm CI is green" reads check-runs, which is `checks`. The older
|
|
76
|
+
# combined-status API is not called, so no `statuses: read` is granted --
|
|
77
|
+
# this block is exactly what the steps below do, and nothing spare.
|
|
78
|
+
checks: read
|
|
79
|
+
# Workload identity federation mints the GCP credential from the job's own
|
|
80
|
+
# OIDC token; nothing here can promote without this repo's identity.
|
|
81
|
+
id-token: write
|
|
82
|
+
|
|
83
|
+
jobs:
|
|
84
|
+
promote:
|
|
85
|
+
if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }}
|
|
86
|
+
runs-on: ubuntu-latest
|
|
87
|
+
steps:
|
|
88
|
+
- name: Determine repo axis
|
|
89
|
+
id: axis
|
|
90
|
+
run: |
|
|
91
|
+
case "${{ github.repository }}" in
|
|
92
|
+
*codegen*) echo "repo=codegen" >> "$GITHUB_OUTPUT" ;;
|
|
93
|
+
*) echo "repo=engine" >> "$GITHUB_OUTPUT" ;;
|
|
94
|
+
esac
|
|
95
|
+
|
|
96
|
+
- uses: actions/checkout@v4
|
|
97
|
+
with:
|
|
98
|
+
fetch-depth: 0
|
|
99
|
+
|
|
100
|
+
# Exact-head is the safety property: the snapshot describes the gated
|
|
101
|
+
# commit's tree, so we promote only if that tree is what is now on the
|
|
102
|
+
# base branch. A squash/rebase that rewrote the tree, or a base that
|
|
103
|
+
# moved on, is skipped — those must be re-gated.
|
|
104
|
+
- name: Verify exact-head
|
|
105
|
+
id: exacthead
|
|
106
|
+
env:
|
|
107
|
+
HEAD_SHA: ${{ github.event.pull_request.head.sha || github.event.inputs.merge_commit }}
|
|
108
|
+
BASE_REF: ${{ github.event.pull_request.base.ref || 'main' }}
|
|
109
|
+
run: |
|
|
110
|
+
set -euo pipefail
|
|
111
|
+
git fetch --quiet origin "$BASE_REF"
|
|
112
|
+
if ! git merge-base --is-ancestor "$HEAD_SHA" "origin/$BASE_REF"; then
|
|
113
|
+
echo "::notice::head $HEAD_SHA is not on origin/$BASE_REF — not an exact-head merge; skipping"
|
|
114
|
+
echo "ok=false" >> "$GITHUB_OUTPUT"; exit 0
|
|
115
|
+
fi
|
|
116
|
+
base_tree=$(git rev-parse "origin/$BASE_REF^{tree}")
|
|
117
|
+
head_tree=$(git rev-parse "$HEAD_SHA^{tree}")
|
|
118
|
+
if [ "$base_tree" != "$head_tree" ]; then
|
|
119
|
+
echo "::notice::base tree != head tree — the base diverged from the gated tree; re-gate. skipping"
|
|
120
|
+
echo "ok=false" >> "$GITHUB_OUTPUT"; exit 0
|
|
121
|
+
fi
|
|
122
|
+
echo "ok=true" >> "$GITHUB_OUTPUT"
|
|
123
|
+
|
|
124
|
+
- name: Confirm CI is green on the merged commit
|
|
125
|
+
id: ci
|
|
126
|
+
if: steps.exacthead.outputs.ok == 'true'
|
|
127
|
+
env:
|
|
128
|
+
GH_TOKEN: ${{ github.token }}
|
|
129
|
+
HEAD_SHA: ${{ github.event.pull_request.head.sha || github.event.inputs.merge_commit }}
|
|
130
|
+
run: |
|
|
131
|
+
set -euo pipefail
|
|
132
|
+
bad=$(gh api "repos/${{ github.repository }}/commits/$HEAD_SHA/check-runs" \
|
|
133
|
+
--jq '[.check_runs[] | select(.conclusion=="failure" or .conclusion=="cancelled" or .conclusion=="timed_out" or .conclusion=="action_required")] | length')
|
|
134
|
+
if [ "$bad" != "0" ]; then
|
|
135
|
+
echo "::notice::$bad failing check-run(s) on $HEAD_SHA — not green; skipping"
|
|
136
|
+
echo "green=false" >> "$GITHUB_OUTPUT"; exit 0
|
|
137
|
+
fi
|
|
138
|
+
echo "green=true" >> "$GITHUB_OUTPUT"
|
|
139
|
+
|
|
140
|
+
# The campaign tooling lives in the private pineforge-workflow repo. Rather
|
|
141
|
+
# than a long-lived PAT, mint a short-lived, read-only token from the org
|
|
142
|
+
# App already installed here (the same app-id/private-key release.yml
|
|
143
|
+
# uses), scoped to just that one repo.
|
|
144
|
+
- name: Mint an org App token to read the campaign tooling
|
|
145
|
+
id: app
|
|
146
|
+
if: steps.ci.outputs.green == 'true'
|
|
147
|
+
uses: actions/create-github-app-token@v1
|
|
148
|
+
with:
|
|
149
|
+
app-id: ${{ secrets.PINEFORGE_APP_ID }}
|
|
150
|
+
private-key: ${{ secrets.PINEFORGE_APP_PRIVATE_KEY }}
|
|
151
|
+
owner: pineforge-4pass
|
|
152
|
+
repositories: pineforge-workflow
|
|
153
|
+
|
|
154
|
+
- name: Checkout campaign tooling (pineforge-workflow)
|
|
155
|
+
if: steps.ci.outputs.green == 'true'
|
|
156
|
+
uses: actions/checkout@v4
|
|
157
|
+
with:
|
|
158
|
+
repository: ${{ vars.WORKFLOW_REPO || 'pineforge-4pass/pineforge-workflow' }}
|
|
159
|
+
ref: ${{ vars.WORKFLOW_REF || 'main' }}
|
|
160
|
+
token: ${{ steps.app.outputs.token }}
|
|
161
|
+
path: .workflow
|
|
162
|
+
|
|
163
|
+
- uses: actions/setup-node@v4
|
|
164
|
+
if: steps.ci.outputs.green == 'true'
|
|
165
|
+
with:
|
|
166
|
+
node-version: '22'
|
|
167
|
+
|
|
168
|
+
- name: Authenticate to GCP
|
|
169
|
+
if: steps.ci.outputs.green == 'true'
|
|
170
|
+
uses: google-github-actions/auth@v2
|
|
171
|
+
with:
|
|
172
|
+
workload_identity_provider: ${{ vars.GCP_WORKLOAD_IDENTITY_PROVIDER }}
|
|
173
|
+
service_account: ${{ vars.GCP_SERVICE_ACCOUNT }}
|
|
174
|
+
|
|
175
|
+
- name: Set up gcloud
|
|
176
|
+
if: steps.ci.outputs.green == 'true'
|
|
177
|
+
uses: google-github-actions/setup-gcloud@v2
|
|
178
|
+
|
|
179
|
+
# The plane is Postgres on Cloud SQL; the promotion reads the active
|
|
180
|
+
# baseline and the gate ledger there, so this runner needs the same
|
|
181
|
+
# connector-path proxy operators use.
|
|
182
|
+
- name: Start cloud-sql-proxy
|
|
183
|
+
if: steps.ci.outputs.green == 'true'
|
|
184
|
+
run: |
|
|
185
|
+
set -euo pipefail
|
|
186
|
+
curl -fsSLo /tmp/cloud-sql-proxy \
|
|
187
|
+
https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.1/cloud-sql-proxy.linux.amd64
|
|
188
|
+
chmod +x /tmp/cloud-sql-proxy
|
|
189
|
+
/tmp/cloud-sql-proxy --port 5433 \
|
|
190
|
+
gen-lang-client-0864094636:asia-east1:pineforge-workflow-pg &
|
|
191
|
+
for i in $(seq 1 30); do
|
|
192
|
+
if (exec 3<>/dev/tcp/127.0.0.1/5433) 2>/dev/null; then exit 0; fi
|
|
193
|
+
sleep 1
|
|
194
|
+
done
|
|
195
|
+
echo "cloud-sql-proxy did not become ready" >&2
|
|
196
|
+
exit 1
|
|
197
|
+
|
|
198
|
+
- name: Install campaign dependencies
|
|
199
|
+
if: steps.ci.outputs.green == 'true'
|
|
200
|
+
run: npm ci --prefix .workflow/campaign
|
|
201
|
+
|
|
202
|
+
- name: Promote baseline
|
|
203
|
+
if: steps.ci.outputs.green == 'true'
|
|
204
|
+
env:
|
|
205
|
+
PINEFORGE_PLANE: gcp
|
|
206
|
+
PINEFORGE_REGISTRY_HOST: 127.0.0.1:5433
|
|
207
|
+
PINEFORGE_EVIDENCE_BUCKET: ${{ vars.PINEFORGE_EVIDENCE_BUCKET || 'pineforge-workflow-evidence' }}
|
|
208
|
+
# No metadata server on a GitHub runner; mint GCS tokens from the
|
|
209
|
+
# federated gcloud credential explicitly.
|
|
210
|
+
PINEFORGE_GCP_TOKEN_CMD: gcloud auth print-access-token
|
|
211
|
+
HEAD_SHA: ${{ github.event.pull_request.head.sha || github.event.inputs.merge_commit }}
|
|
212
|
+
PR_NUMBER: ${{ github.event.pull_request.number || github.event.inputs.pr_number }}
|
|
213
|
+
PR_URL: ${{ github.event.pull_request.html_url || github.event.inputs.pr_url }}
|
|
214
|
+
MERGED_AT: ${{ github.event.pull_request.merged_at || github.event.inputs.merged_at }}
|
|
215
|
+
run: |
|
|
216
|
+
set -euo pipefail
|
|
217
|
+
ms=$(node -e "process.stdout.write(String(Date.parse(process.env.MERGED_AT)))")
|
|
218
|
+
set +e
|
|
219
|
+
node .workflow/campaign/src/baseline-promote.mjs \
|
|
220
|
+
--repo "${{ steps.axis.outputs.repo }}" \
|
|
221
|
+
--merge-commit "$HEAD_SHA" --head-sha "$HEAD_SHA" --ci-head "$HEAD_SHA" --ci-green \
|
|
222
|
+
--pr-number "$PR_NUMBER" --pr-url "$PR_URL" --merged-at-ms "$ms"
|
|
223
|
+
code=$?
|
|
224
|
+
set -e
|
|
225
|
+
# Exit 2 is `refuse`: no PASS verdict binds this merge as a single-axis
|
|
226
|
+
# advance -- a cross-cutting engine+codegen change (gated as a composite
|
|
227
|
+
# the single axis cannot complete), an ungated merge, or a non-exact-head
|
|
228
|
+
# merge. Defer green, do not fail CI; a cross-cutting pair is promoted by
|
|
229
|
+
# hand with `lab promote --composite` once both repos merge (see the
|
|
230
|
+
# baseline-promote skill). Any other non-zero is a real error.
|
|
231
|
+
if [ "$code" = "2" ]; then
|
|
232
|
+
echo "::notice::baseline not promoted (deferred): no PASS verdict binds this merge as a single-axis advance. If this was a cross-cutting engine+codegen change, run the composite promote by hand once both repos are merged. Nothing was changed."
|
|
233
|
+
exit 0
|
|
234
|
+
fi
|
|
235
|
+
exit "$code"
|
|
@@ -124,7 +124,7 @@ jobs:
|
|
|
124
124
|
# failure would leave npm shipping a version PyPI never got.
|
|
125
125
|
- name: Publish to PyPI
|
|
126
126
|
if: ${{ !inputs.dry_run }}
|
|
127
|
-
uses: pypa/gh-action-pypi-publish@
|
|
127
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
128
128
|
|
|
129
129
|
# Commit + tag + push AFTER PyPI succeeds. The `git push --tags` triggers
|
|
130
130
|
# publish-pyodide.yml for npm (which re-runs the gate — defense in depth),
|