Skip to content

Another symbol's bars reach a run as a feed: kernel instrument feeds + Pine foreign request sites (XSYM-D) - #292

Merged
luisleo526 merged 6 commits into
mainfrom
r5/xsym-feeds
Sep 27, 2026
Merged

luisleo526 merged 6 commits into
mainfrom
r5/xsym-feeds

Conversation

@luisleo526

Copy link
Copy Markdown
Collaborator

Another symbol's bars reach a run as a feed (XSYM-D)

A strategy that reads request.security on a symbol other than its chart can now run against that symbol's own bars. Before this, only the run's own symbol was addressable, so these scripts were refused.

Kernel

  • NativeRunSpec::instrument_feeds (NativeInstrumentFeed {instrument, tf, bars, close_ms, columns}) and a new series source InstrumentFeed keyed by (instrument, timeframe).
  • Delivery by interval only:
    • With lookahead off, every undelivered bar whose close is at or before the chart bar's last traded close is handed over, in order.
    • With lookahead on, every bar that opened by the chart bar's open is handed over.
    • Feed bars before the first chart bar are history. No calendar is guessed for the other instrument.
  • Opt-in: every hash fold is conditional, so a run without feeds is byte-identical. The ADR-0001 rule-2 ruling row is added: another venue is driven by data only, with no new knob.
  • Refusals: bad feeds are refused with named errors, and stream_begin refuses a spec that has instrument feeds.

Pine adapter

  • Each foreign request site runs its expression on every delivered bar of its feed, in the requested context: history, TA, bar_index, time_close and syminfo.* belong to the other symbol.
  • ignore_invalid_symbol turns an invalid symbol into na.
  • A registered symbol with no installed feed fails the run closed, naming the symbol and timeframe.
  • TradingView's recorded request values are replayed from a store keyed by chart-bar open time, with na where the tape has no row.

C ABI and harness

  • Four setters, each behind its own PINEFORGE_HAS_…_V1 probe: strategy_set_symbol_feed, strategy_set_symbol_feed_column, strategy_set_symbol_facts, strategy_set_recorded_series. They refuse while a run is in progress.
  • run_strategy.py installs a probe's pinned request data from PINEFORGE_REQUESTS_ROOT, sha256-verified, and records it in the run provenance. With the variable unset, nothing changes.
  • Four BacktestEngine virtuals are added inside the current C++ ABI epoch; abi-stability.md records that objects compiled against an earlier v19 header must be rebuilt. PF_ABI_VERSION is unchanged.

Verification

  • New tests on synthetic bars:
    • test_native_instrument_feed: 12,375 checks;
    • test_native_instrument_feed_twin, the kernel/adapter twin: 353 checks;
    • test_symbol_request_data: 119 checks.
    • Each fails before the change.
  • Full verification on this head:
    • preflight 43 stages;
    • release 720 rows, runtime budget ratio 3.557x;
    • debug and sanitizers 701/701;
    • kernel 292 rows with 0 residual findings;
    • docs with 0 Doxygen warnings;
    • corpus parity 312/312 with 0 moved;
    • subset 54/54.
  • Two TradingView witness tapes reproduce bar for bar through the new path: 130/130 and 21/21.
  • Floors: kernel 289 → 291, release 716 → 720, and debug/sanitizers/native registration 697/697/706 → 701/701/710.

The population parity sweep of this exact tree is posted as pineforge/parity.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LifAW9e5J6gFx7gatuxETE

luisleo526 and others added 6 commits September 27, 2026 22:22
… interval, and the Pine adapter's request sites of other symbols

Kernel (ADR-0001 rule 3, opt-in). NativeRunSpec::instrument_feeds holds other
instruments' own bars, keyed by (instrument, timeframe), each bar with its own
close (close_ms) and optional named columns; a NativeSeriesSource::InstrumentFeed
series names one. On each accepted input the series is handed, in feed order,
every bar not yet handed over that has closed by the input's
NativeInterval::last_traded_close_ms (lookahead off) or opened by its open_ms
(lookahead on); gaps is the subscription contract's; bars before the first
input ride on it. No calendar is guessed for the instrument; the chart side
reads the input's calendar interval (resolved from the label on a raw-label
partition, whose inputs carry no duration). With no feed installed every
digest, delivery and run is what it was. Streams refuse a spec that installs
one. Nine named refusals (NativeRunSpecError/Field, with C twins so the
translation stays exhaustive); C has no route (1.0 boundary row).

Adapter. register_security_eval(sec_id, symbol, tf, input_tf, lookahead_on,
gaps_on, ignore_invalid_symbol) registers a site of another symbol; the host
projects its installed feeds as the spec's instrument feeds, declares one
InstrumentFeed series per site after its same-symbol sites (which keep their
route), and runs the payload on every bar handed over in the requested
context (history and TA over the context's bars, bar_index, time_close and
syminfo.* the context's). gaps_on clears at the bar open, before the COOF
checkpoint. An invalid symbol reads na under ignore_invalid_symbol and fails
closed without it; a missing feed fails closed naming symbol and timeframe;
an aggregated chart is refused. Recorded request series: key -> chart-bar
open -> value, na where the tape has no row.

C ABI: strategy_set_symbol_feed / _feed_column / strategy_set_symbol_facts /
strategy_set_recorded_series, each behind its own PINEFORGE_HAS_*_V1 probe,
reached through BacktestEngine virtuals whose kernel base answers false; a
source host refuses stream_begin while any holds data, and
check_c_abi_runtime.py pins that each declaration says so.

Tests on synthetic bars only: test_native_instrument_feed (kernel, the
report's pinned cases), test_native_instrument_feed_twin (kernel/adapter
twin), test_symbol_request_data (C ABI, recorded series, stream refusal).

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…INEFORGE_REQUESTS_ROOT

The environment contract of workflow docs/xsym-requests.md: when
PINEFORGE_REQUESTS_ROOT is set and <root>/<basename of the strategy dir>/
requests.json exists, the harness holds the manifest to
pineforge-probe-requests/v1 (the refusals of the workflow's
validateProbeRequests) and to this probe, verifies every file it names under
the probe's own files/ against its sha256 (a feed against its byte count),
parses the feeds (an empty or NaN volume or extra value is NaN), the
recorded tapes and the symbol facts, and installs them through
strategy_set_symbol_facts / _feed / _feed_column / strategy_set_recorded_series
before the run. It reads nothing else: never another slug's directory, never
the case-wide PINEFORGE_PINE_LIBRARIES. The run provenance records each
feed's (key, sha, bars), each tape's (key, sha, rows) and the manifest's sha,
as it does for the aux and native security feeds. A malformed manifest stops
the run by name before any engine call; a library without the setters and the
docker runner are refused. Unset, or no manifest for the probe: the engine is
handed exactly what it always was.

The frozen verifier names the probe's build directory BUILD / slug
(pineforge-lab 3bac0b7b scripts/verify-engine-local.py:1695) and runs this
script on it (:1593-1596, :1614-1617) through _run_timed (:190-193), whose
subprocess.run passes no env=, so the runner's environment reaches it.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…nstrument-feed contract

native-engine.md: the field list, the Limits paragraph and the stream-limits
bullet state the new contract; a new section "Instrument feeds: another
symbol's bars" gives the struct, the delivery rule, the validation table, the
stream refusal and the Pine adapter's use (the symbol-key overload, the
payload in the requested context, ignore_invalid_symbol, the fail-closed
refusals, recorded request series, the run_strategy.py environment contract);
the 1.0 C boundary table has the "instrument feeds" row its checker pins.
ADR-0001: the rule-2 ruling row "Wave XSYM-D" (mechanism: another venue is
driven by changing data only; knob: none -- lookahead and gaps are already
the subscription's delivery rules), calibrated by XSYM-DESIGN's 203/203 merge
pins and this lane's two witness reproductions; the HTF paragraph, the run-spec
paragraph and the adapter's section name the new surface. mtf.md, coverage.md
and README: the other-symbol surface, the recorded fundamentals store, the
four C setters; the runtime export counts move 58 -> 62 (66 -> 70 declared,
109 -> 113 in total).

Sentences this commit removes, each superseded by the contract it states:
- ADR-0001 (5691220, lane L14-C): "request.security-style series are
  reachable from a bare host, as declared series of the run's own symbol" --
  another symbol's bars are reachable now too, and the paragraph says so.
- coverage.md (cc4a56e): "Runtime owns the security state machine, ratio /
  calendar aggregation, lookahead / gaps semantics, lower-TF emulation, and
  per-security diagnostics", "The runtime owns same-symbol security
  computation" and "Why not done yet: Most strategy logic in our test corpus
  relies on the chart symbol's bars + indicators" -- the request.security row
  and its section state the other-symbol surface instead.
- coverage.md (9507d8f): "Would need a parallel data-ingestion path so the
  user can supply a CSV / Parquet of fundamentals", "Future story:
  Fundamentals and economic indicators would land as a generic auxiliary
  timeline feature" and "Fundamentals- and macro-driven strategies are a
  meaningful but smaller user segment" -- the recorded request series store
  and the pinned requests manifest are that ingestion path.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…'s four rows

The rebase onto 1e360bd (INT27 with its round-2 fix) shifted cited lines:
reanchor_doc_citations.py --ref 1e360bd plus check_doc_anchors.py --fix and
four hand fixes bring every anchor back (1725/1725; the diff changes digits
only).

Floors, counted with ctest -N on the lane's tree under each ci_verify
profile's cache definitions:
  kernel      292 registered, 291 run (+2: test_native_instrument_feed,
              test_run_strategy_requests; the WebSocket row still skips)
  release     720 (+4: the two above, test_native_instrument_feed_twin,
              test_symbol_request_data)
  debug/sanitizers/native registration 701/701/710 (+4 each)
KERNEL_MIN_TESTS 289 -> 291, RELEASE_MIN_TESTS 716 -> 720,
EXCLUDED_REGISTERED_MIN 697/697/706 -> 701/701/710; docs/ci.md and the
floor citations follow.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…d); setters refuse a run in progress; the literal input_tf trap deleted

An independent review of 1e360bd..80236d5a found, and this commit fixes:

- The workflow keeps a request that was na on every chart bar as a tape with
  a header only (campaign/tv/xsym/decode.mjs keeps non-na rows), and pins it.
  strategy_set_recorded_series(key, ..., 0) erased the key, so the first read
  failed the run as "no recorded series is installed". n == 0 now installs a
  series without rows: every read is na. strategy_set_symbol_feed(..., 0)
  likewise installs a feed without bars, whose sites read na, instead of
  leaving the symbol unfed.
- The four setters answer -1 while a run is in progress (a stream's warmup
  or realtime leg included), naming it: the source host's mutation guard is
  inert, so a mid-stream install changed what the run read and its digest.
- strategy_set_symbol_feed_column judges the column name the kernel's way at
  install (a name that is not UTF-8 was accepted, then refused at begin).
- register_security_eval(id, "SYM", "tf", "literal", bool[, bool]) bound the
  same-symbol overload (const char* -> bool outranks std::string) and read
  the symbol as the timeframe. That spelling is deleted; generated code
  passes input_tf_ (a std::string) and is unaffected.
- run_strategy.py refuses by name a manifest the schema cannot walk (JSON
  nested past the recursion limit, a mintick past a double, an unreadable
  file) and a stamp an int64 cannot hold, which ctypes would wrap silently.
- abi-stability.md records the four BacktestEngine virtuals added inside v19
  (as N5 did inside v18); mtf.md and native-engine.md state the empty
  installs, the in-run refusal and that the generated clear_security() also
  clears a gaps_on payload's own history (a codegen limit).

Tests: test_symbol_request_data 77 -> 119 checks (empty tape, empty feed,
column name, in-run refusal, the deleted spelling as static_asserts);
test_native_instrument_feed 10543 -> 12375 (a raw label outside the session
reads the calendar's zero-traded slot); test_run_strategy_requests 13 -> 15.
Fail-before on 80236d5a's headers and library: the static_asserts fail to
compile; 15 runtime failures; the harness raises OverflowError.

Sentences of 4076d7d this commit rewrites: mtf.md's and native-engine.md's
"gaps_on reads na on a chart bar that received no new bar" now also states
that the generated clear_security() resets the payload's own history, and
mtf.md's "Historical runs only: a stream refuses an installed symbol feed"
now also states the in-run refusal.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…etached-comments census 8 -> 0)

The preflight's detached-comments stage (measure_detached_comments.py
--check-ceiling, ceiling 0) counted the eight-line group comment above the
four PINEFORGE_HAS_…_V1 probes as detached: a second block in the gap above
the first probe's own doc. Its text now opens that doc, so the census of the
kernel compile closure is 0 again; the lines keep their numbers.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
import math
import sys
import tempfile
import unittest
from pathlib import Path
from unittest import mock

import run_strategy as rs
@luisleo526
luisleo526 merged commit 7f807b9 into main Sep 27, 2026
18 checks passed
luisleo526 added a commit that referenced this pull request Sep 29, 2026
…GINE) (#300)

Audit of every README and doc page of pineforge-engine against engine main
35db01c and the live measurement; each change names its source.

What was wrong, and the source of the truth:

- Parity numbers were the retired 4,190-probe round-39 era (badges, hero,
  scoreboard, lane table, contributing-llm.md, design/progress pages). Now the
  active baseline pineforge-parity-baseline-20260929-engine-35db01c8 (snapshot
  sha256 47cec517..., population cf857209...): 8,006 probes, 7,989 graded =
  7,905 excellent + 84 strong, 17 TradingView-side anomalies excluded,
  18 lanes, 2,759,431 TradingView trades (population tvTradeRows / 2). The
  "2.8M matched" count has no source in the snapshot and is gone. Public
  corpus: 311 excellent + 1 declared anomaly (scripts/check_corpus_parity.sh
  pinned headline; parity step of the XAU-CAL lane job on this tree), and
  anomaly-equity-mirror-strategy-equity-01 is that anomaly (it does not
  match trade-for-trade on the pinned corpus).
- Versions: no 1.0.0, 0.14.0 or rc tag exists (git tag; gh release list).
  CHANGELOG's "## 1.0.0" becomes "## Unreleased" and lists #292-#298, which
  it lacked (squash messages 7f807b9..35db01c); "34 more" PF_API is 39.
  README Releases: v0.13.1 entry added, v0.13.0 line corrected, the merged
  live/abi-v4 "Unreleased" line and the 1.0.0 line replaced. Pages that
  framed 1.0 as shipped now say planned.
- Front door 1 could not run: pineforge-codegen has no CLI (0.10.4 or main),
  PyPI 0.10.4 output does not compile against main (cc log), a plain
  -lpineforge link drops the runtime C ABI (run_strategy.py refuses it), and
  run_strategy.py needs --ohlcv/--no-trim-output without the corpus. The new
  block ran end to end from a clean clone (14 trades on the tutorial feed).
- Prerequisites: floating-point std::to_chars (src/str_utils.cpp:55) needs
  GCC 11 / libc++ 14; ctest --test-dir needs CMake 3.20; examples need
  -DPINEFORGE_BUILD_EXAMPLES=ON; the install also ships libpineforge_kernel.a.
- MCP section: the image, hosted server and npm package run engine 0.13.1 +
  codegen 0.10.4 (pineforge-release v0.1.25 notes); hosted server and npm
  package descriptions corrected from their live/ published sources.
- Benchmarks: every number reproduces (check_provenance 163/163); framing
  fixed (commit and method named, PineTS has had strategy.* since 0.9.17),
  recipes state their prerequisites, two wrong failing-gate cells fixed,
  personal host name scrubbed from 14 Google Benchmark JSONs with the
  manifest sha256 values updated (origin_sha256 keeps the measured file).
- Reference pages: native-engine.md, pine-to-native.md, coverage.md,
  pine_v6_coverage_detail.md, the contract pages, ci.md and the design notes
  described removed members and pre-#253/#254 behaviour, stale counts
  (src 48 -> 53 .cpp, 66 -> 70 indicator classes, 43/33/10 -> 46/35/11
  NativeRunSpec fields, floors 786/298 -> 790/300), wrong anchors, drawings
  as absent, and transpiler status of an old codegen (now "on codegen main,
  not in a release yet" where it differs from v0.10.4).
- Hygiene: internal host names, personal paths, private-repo references and
  campaign tool names marked or removed; the banner image's stale
  "V0.8.0 / 245/246 / 0 engine bugs" strip removed; a dead
  pineforge-workflow-live link replaced by the public pineforge-live repo.
- Two orphan pages, docs/cheatsheet-runtime-and-execution.md and
  docs/tv-parity-probe-spec.md, were wrong in their load-bearing claims
  (17 removed engine members, pointvalue/FX/slippage claims) and nothing
  linked them: deleted.
- Sample outputs were stale: every page and the tutorial README printed the
  tutorial MACD as 49 trades / -190.85; since 650b0cb (in v0.13.1) the report
  counts the range-end close, and every harness prints 50 / +569.97 (runs on
  a clean clone of this branch). examples-python-sweep.md's 10000 capital
  could not pay for its 1-BTC order (every combo 0 trades): 100000, output
  re-measured. examples-multi.md output format matches multi.py; the
  magnifier A/B page shows today's run. The report fields script_tf_ratio
  and needs_aggregation print their contract values again on this base
  (FIX-E1E2, #299; tutorial/run_mtf.py Table A: ratio 1/1/4/16, agg
  0/0/1/1), so the pages state them as plain facts.
- Doxygen: `file:line` in four pages autolinked to a dead "file:line" URL;
  spelled `path:line` now. Build: 0 warnings.

Review fixes (REVIEW-DOCS-ENGINE-final.md, verdict MERGE-WITH-FIXES, of the
first version of this change, 79bd84c1 + 6cb01aa0): its five P2 findings with
the reviewer's fix text, and every P3 row but the last.

P2
1. docs/pages/metrics.md: a timestamped FX curve no longer fails closed for a
   leveraged position across a rate change; that position takes the
   broker-open margin checkpoint at the step bar's open
   (tests/test_affordability_fx.cpp:152-154, :781).
2. docs/pages/report-schema.md: the #254 caveat sat inside the table, so the
   bar_magnifier_enabled row rendered as text; it now follows the table.
3. CONTRIBUTING.md, docs/pages/getting-started.md: compiler minimums are the
   ones README.md states (floating-point std::to_chars, src/str_utils.cpp:55:
   libstdc++ from GCC 11, libc++ 14, macOS 13.3; g++-9 and g++-10 fail).
4. docker/README.md: the sample is the published image's run (50 trades,
   17/33, +569.97, trade 1 entering 1777488300000).
5. docs/pages/mtf.md: expected Table A says main prints 0 in ratio and agg?
   until the #254 regression is fixed.

P3
- configuration.md, CHANGELOG.md, coverage.md: v5 scripts do not "keep" host
  defaults (both codegens refuse //@Version=5); code from an earlier codegen
  and a hand-built PineStrategyConfig do.
- streaming.md: "Every strategy_stream_* call above" (create/free return no
  status).
- examples-multi.md: a module also exports std::piecewise_construct.
- integration-cmake.md: EXACT 0.13.1 also matches a git-checkout build of
  main; the ABI promise starts "From 1.0.0".
- ffi-python.md, tutorial-macd.md: the mirror covers the report structs, not
  every struct (ffi-python.md:15-17).
- configuration.md: tracing costs one branch per traced call when disabled
  (report-schema.md:180), not zero.
- benchmarks/results/raw/README.md: "Two edits were made" (host_name was
  rewritten in every Google Benchmark file); benchmarks/README.md: the
  maintainer fetch runs with the campaign environment sourced. Wording only.
- AGENTS.md: the configure line exports compile commands, which the receipt
  check needs; AGENTS.md and docs/ci.md: promote-baseline.yml is installed
  from the campaign copy, not unchanged (31 lines differ).
- docs/ci.md: the debug profile also skips the twin-parity guard
  (TWIN_PARITY_PROFILES).
- mtf.md, timeframes.md: "reported for an engine fix" dropped (no public
  issue).
- native-feature-parity.md: the C API "landed on main", not "shipped".
- tutorial/README.md: Table B's script_tf_ratio prints 0 on main until the
  #254 regression is fixed.

Not changed here: benchmarks/results/summary.md and trade_comparison.md keep
the first version's text (hand edits of generated output; fixing the generator,
benchmarks/compare.py:361 and scripts/verify_corpus.py:1403, is an
engine-lane follow-up). No benchmark number or results file changes beyond
the raw/README.md and benchmarks/README.md wording above: BENCH-REFRESH is
re-measuring the benchmark.

Rebased onto 4dc496d (FIX-E1E2, #299), squashed to one commit. docs/ci.md
states the new floors: PR registration 773 (debug, sanitizers) and 782
(native), full-run release 792 and kernel 300 (scripts/ci_verify.py:320,
:594, :638). The one rebase conflict, a native-refactor-progress.md row,
keeps main's re-anchored lines and this change's host-name removal.

Sentences this commit deletes or rewrites past recognition, named by the
commit that introduced them (scripts/check_doc_reverts.py):
- a4ab775 (docs: source-verified runtime-overrides + order-execution cheatsheet): cheatsheet-runtime-and-execution.md (142)
- 480fd19 (Production-readiness probes + engine state-reset / finite-fill fixes (): tv-parity-probe-spec.md (61)
- 28ad088 (docs: add Part 3 (cross-cutting behaviors) to engine cheatsheet): cheatsheet-runtime-and-execution.md (60)
- a8f84b9 (docs(api): OpenCV-style C ABI reference site + CF Pages deploy): abi-stability.md (21), tutorial-macd.md (3), examples-magnifier.md (2), examples-multi.md (2), getting-started.md (2), index.md (2), report-schema.md (2), examples-rust.md (1), ffi-python.md (1), install.md (1), lifecycle.md (1)
- cc4a56e (docs: add Pine v6 runtime coverage report (docs/coverage.md)): coverage.md (37)
- 24dcc53 (docs: reconcile Pine v6 audit + coverage docs with the 2026-06-10 audi): pine_v6_coverage_detail.md (29)
- d093560 (INT26: wave H, the late picks and the corpus re-pin to b40aa8e (1.0.0-): native-refactor-progress.md (13), install.md (3), pine-to-native.md (2), CONTRIBUTING.md (1)
- 73817c1 (Lower generated Pine execution onto the native kernel and retire the l): cheatsheet-runtime-and-execution.md (8), README.md (3), tv-parity-probe-spec.md (2), reservation-expansion-candidate.md (1)
- b1fbf0b (docs: detailed Pine v6 coverage report (per-identifier audit)): pine_v6_coverage_detail.md (14)
- 622d653 (docs(README): rewrite for the round-11 engine — brand-first, OSS-first): README.md (12)
- 46b2ced (docs: ABI v4 live surface; cheatsheet corrections (trail_price is read): cheatsheet-runtime-and-execution.md (7), README.md (3), live-surface.md (2)
- c45cf5a (refactor: move retained-parent priority into Pine compatibility): README.md (7), pine-order-priority-boundary.md (4)
- c1084ff (docs: record round 39 fractional price admission parity): README.md (10)
- f268342 (feat: add historical account FX lifecycle (#125)): cheatsheet-runtime-and-execution.md (10)
- af4c688 (Document realtime streaming lifecycle): cheatsheet-runtime-and-execution.md (5), coverage.md (3), examples-python-sweep.md (1), tutorial-macd.md (1)
- 9507d8f (refactor(corpus): pull equity-mirror into corpus/parity-anomalies/): coverage.md (10)
- 76482e6 (fix(runtime): align TA coverage and corpus replay): coverage.md (9)
- cc0b22d (Refactor reservation growth and Pine market instruction ownership): fill-model.md (7), frozen-market-instruction.md (2)
- d5a5eaf (Align lifecycle and admission documentation with final v11 model): market-admission.md (9)
- a6b0b70 (docs(audit): exhaustive Pine v6 coverage audit — 38 critical, ~62 mino): pine_v6_audit_master.md (7)
- 1e360bd (INT27: wave I -- magnifier on TradingView's intrabars, recalculation f): cheatsheet-runtime-and-execution.md (5), magnifier.md (1)
- 1dd5430 (Add the native feature-parity design: gaps, kernel-vs-adapter rulings,): design/native-feature-parity.md (6)
- 74491fa (INT28: wave-J engine integration (TVDEF-DROPS, W3/W3B/W4/W5/W6/W6B/W8,): cheatsheet-runtime-and-execution.md (4), README.md (1)
- 7ad5d38 (docs: refresh parity scoreboard through round 23): README.md (5)
- 7f807b9 (Another symbol's bars reach a run as a feed: kernel instrument feeds +): coverage.md (4), mtf.md (1)
- 3b13183 (Refactor order admission and trigger lifecycle into generic submodels): exit-leg-lifecycle-reflection.md (5)
- e244d65 (docs(coverage): update pine_v6_coverage_detail.md for post-sprint stat): pine_v6_coverage_detail.md (5)
- f864be5 (refactor: isolate Pine cap policy from native order state): cheatsheet-runtime-and-execution.md (2), pine-intraday-cap-boundary.md (2)
- e7cdf05 (Add native execution terms: host-resolved sizing, exact reversal, prec): abi-stability.md (2), native-engine.md (2)
- b4dd9a3 (docs(mtf): add multi-timeframe tutorial + Doxygen page): mtf.md (4)
- 5c2be9d (docs: record round 38 whole-lot budget parity results): README.md (3)
- 6bfe983 (docs: align round 39 lane table and diagnostic evidence): README.md (3)
- 471a113 (Docs: the README carries the 200-strategy refresh -- tiers per engine ): README.md (3)
- 8df08f2 (fix(engine): make dead strategy.close semantically inert (#143)): cheatsheet-runtime-and-execution.md (3)
- d3cca9e (Docs: correct migration semantics and harden publication guards): cheatsheet-runtime-and-execution.md (2), pine-to-native.md (1)
- 52f4dde (Preserve complete mirror context and earlier standalone ABI controls): fill-model.md (3)
- 4fb9db3 (Docs: CONTRIBUTING.md rewritten for someone who has never seen this re): CONTRIBUTING.md (2)
- 2ab2bfb (docs(README): round-11 closed-test results and a full factual refresh): README.md (2)
- 0501468 (docs: task-13 fix round 1 — v4 report mirrors (schema, Rust), probe-su): README.md (1), cheatsheet-runtime-and-execution.md (1)
- cfbe677 (Docs: the session flags end a session where TradingView ends it (R5 la): cheatsheet-runtime-and-execution.md (2)
- 6aa1d13 (runtime: wire syminfo.pointvalue through all money paths; hold ScopedT): coverage.md (2)
- 8b7965a (Docs: onboarding written for the contributor who is a language model (): contributing-llm.md (2)
- 16f3652 (Docs: the two site front doors re-derived against HEAD (R5 lane L14-B,): index.md (2)
- 04b0588 (Add native resolved execution settlement and preserve paid entry costs): metrics.md (2)
- 149f77c (Replace seven pending-order flags with quantity and event facts): quantity-intent.md (2)
- 962960b (Session flags match TradingView on multi-window and extended-hours cha): pine_v6_coverage_detail.md (2)
- 5215291 (Merge branch 'round5/bar-indexed-extremes-ring' into round5/candidate): pine_v6_coverage_detail.md (2)
- b1b27f0 (Initial commit: PineForge runtime v0.1.0): CONTRIBUTING.md (1)
- bfdbe96 (docs: refresh parity scoreboard through round 24): README.md (1)
- cda51d5 (Record the round 35 parity scoreboard and raw trade gains): README.md (1)
- 0d76a09 (Wave G: no ordinary quantity request stops a run, cancelled exits stay): adr/0001-kernel-adapter-boundary.md (1)
- 0983770 (Unify remaining fill paths under native settlement (#247)): ci.md (1)
- 50339d0 (Docs: the §1 inventory carries its closure markers, and a gate keeps t): design/native-feature-parity.md (1)
- 8b3b481 (docs+fix: org rename to pineforge-4pass; AI capability-gap note in REA): examples-multi.md (1)
- c28c2db (Derive placement state from original admission observations): fill-model.md (1)
- 208f00b (docs: refresh ctest count + run_strategy usage example): install.md (1)
- 0c174d9 (Docs: the arm options, the adoption table and the grid re-lowering wai): native-engine.md (1)
- 4b05b62 (Adapter re-lowering: the TradingView margin call runs through the kern): native-engine.md (1)
- 8e558eb (Say what the per-bar broker hash is for, where its API is documented (): native-engine.md (1)
- 5f3299d (Build the standalone native execution path (#243)): native-engine.md (1)
- b18f75e (Native sizing bases and fractional reduces (R5 lane L3)): native-engine.md (1)
- 0ef00da (The pages say a working row tells an absent arm from an arm at 0.0 (R5): native-engine.md (1)
- 7328f4d (Docs: the migration page is a complete map, and a gate holds it comple): pine-to-native.md (1)
- ce64f06 (docs(audit): update Pine v6 master audit — mark 20 resolved critical i): pine_v6_audit_master.md (1)
- a19f5a8 (docs: repoint codegen references to pineforge-codegen-oss; purge old f): pine_v6_audit_master.md (1)
- 2db58d9 (runtime: reconcile per-trade MFE/MAE with TV excursion semantics; gate): pine_v6_audit_master.md (1)

Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
@luisleo526
luisleo526 deleted the r5/xsym-feeds branch October 5, 2026 02:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant