Skip to content

XAU-CAL: daily bars dated by the daily feed, the daily magnifier, and TradingView's session calendar - #298

Merged
luisleo526 merged 5 commits into
mainfrom
r5/xau-cal
Sep 29, 2026
Merged

luisleo526 merged 5 commits into
mainfrom
r5/xau-cal

Conversation

@luisleo526

Copy link
Copy Markdown
Collaborator

XAU-CAL lifts the last two probes below strong: two strategies on OANDA:XAUUSD.

1. Daily bars dated by the daily feed (kernel, generic)

  • When a daily feed is installed, each of its stamps labels the D bar that holds the session instant it covers. Only the label moves: the bar's span, closes and OHLCV stay the calendar's. There is no Pine/TradingView branch and no knob.
  • A lookup by a moved label returns that bar's own interval. This covers the bar-open hook, a magnified run's close, execution anchors, the risk day and a C host's session day.
  • A C host's day on a 1D script is read at the bar's first in-session instant.
  • ADR: docs/adr/0001-kernel-adapter-boundary.md, "Lane XAU-CAL: rule 2 ruling".

2. Daily magnifier (harness)

  • scripts/run_strategy.py runs a daily chart that declares the bar magnifier on the lane's 1m feed, with the chart's own daily bars installed as the daily feed.
  • It does so only where the 1m feed rebuilds every daily bar, which holds on XAU, EUR and BTC. Exchange lanes run on their chart bars as before.

3. TradingView's session calendar (source layer + harness)

  • The Pine host takes the symbol's calendar through set_symbol_calendar.
  • Inside the calendar's days, session.islastbar(_regular) and bars ahead in time() / time_close() come from the calendar. Bars behind, and W/M charts, read history as before.
  • The harness reads PINEFORGE_RUN_SESSION_CALENDAR, which the case runner provides for the XAUUSD and EURUSD lanes.

Tests (fail on main, pass here):

  • test_native_day_labels (558 checks)
  • test_daily_magnifier_tapes
  • test_symbol_calendar_tapes
  • test_native_c_api, the dated-bar check
  • scripts/test_run_strategy_magnifier.py
  • scripts/test_symbol_calendar.py

All tapes are synthetic TradingView exports.

Replay against main (1,229 probes: every XAU probe, every magnifier-declaring probe and 40 controls): 3 up, 0 down.

  • bystry1991 XAU 1D: moderate → excellent.
  • job-2660 XAU 15: moderate → excellent.
  • job-2660 XAU 1D: strong → excellent.

The full population gate follows in the parity status.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LifAW9e5J6gFx7gatuxETE

luisleo526 and others added 5 commits September 29, 2026 17:05
…s stamp

OANDA stamps its XAUUSD daily bars at 17:00 ET, in the break of the
1800-1700 session. TradingView dates every daily bar and every order of
OANDA:XAUUSD 1D by that stamp -- 22:00 UTC in EST, 21:00 UTC in EDT --
also when the chart is backtested with the bar magnifier on its 60-minute
intrabars (lab tv --no-note, the lane's synthetic xc-dmag-xau1d and
xc-dmag-dip-xau1d with their -off twins, OANDA:XAUUSD 1D 2026-02-16 ..
04-01; the entry comments spell time 0216-2200 / 0308-2100 and time_close
the next stamp). A run that aggregates an intraday input into "D" script
bars resolved each bar's calendar interval from the session and labelled
it at the session's 18:00 ET open (script_interval_resolved), an hour
after TradingView's date: probe bystry1991 xauusd-1d, run magnified, books
TradingView's one trade on the 2026-03-23 bar at 22:00 UTC, outside the
tape's window (lane TAIL-C, BLOCKED 1).

Mechanism, NativeExecutionConsumer::prepare_day_labels (kernel,
src/native_execution_consumer.cpp), prepared at the end of begin_ready,
once every feed the run reads is installed, and read where a script
interval resolves:
- with an intraday input, a "D" script timeframe and a daily feed installed
  -- the feed store's (set_native_security_feed) or a declared series'
  authoritative bars -- each stamp labels the D bar holding the session
  instant it covers: the stamp itself inside a session, else the next
  session's open (the instant the store already keys the feed's bars by);
- only the label moves: the bar's span, closes, successor and OHLCV stay the
  calendar's aggregate, and a lookup by the label is the bar's own
  (day_label_origin): the bar's open and close, its input slot, its
  sub-bars on a magnified run, its execution anchors and risk day read the
  bar's interval and day, not the day before the stamp; a C host's
  session_day_ordinal is read at the bar's first in-session instant
  (native_c_host.cpp, the pf_native_decision_v1 field's doc says so);
- a bar no stamp covers keeps the calendar's label, a bar two stamps cover
  takes the earlier, and a label never passes an input bar the run holds: a
  stamp with an input between it and its bar's calendar open labels nothing
  (a label never follows its bar's first input, nor precedes an input of
  the bar before; NSE's 13:45 Muhurat stamp opens its day and labels it);
- no daily feed, a calendar or raw-label input, or a script timeframe other
  than one day: no label moves and no calendar lookup is made. A stamp at
  the calendar's own open (09:30 ET, 17:00 CT, 00:00 UTC, OANDA:EURUSD's
  17:00 ET) changes nothing.

ADR-0001 (rule 2), new section "Lane XAU-CAL: rule 2 ruling":
- generic: a venue dates its own days; a second venue is driven by
  installing its own daily bars, and the kernel holds no venue's day-stamp
  convention and branches on no platform;
- no knob: the policy knob is the authoritative-feed ruling's, installing
  the daily feed or not, as W15's late opens are; a day-label field would
  restate the stamps the run installed.
docs/pages/native-engine.md lists the rule with the feed store's others.

Consistency with lane TAIL-G (r5/tail-g bded86be, on main since INT30): its adapter
reads another symbol's bars on a D chart by the chart bar's own time and
time_close. On the magnified daily route the chart bar the adapter sees
(on_native_bar_open's script bar, time) is now the stamp and its time_close
the next stamp -- the two values the chart-feed route gives -- so both
routes read the same foreign bars.

Tests: tests/test_native_day_labels.cpp (kernel-only): OANDA's break
stamps across the 2026-03-08 DST switch (labels = stamps, spans, closes and
values unchanged; the bar's open reads the interval and input slot its
close does), a magnified run (every sub-bar the bar's own, 23 hourly),
a declared series' authoritative D bars, OANDA:EURUSD's 1700-1700 stamps at
the open (nothing moves), a missing, a doubled and a post-input stamp, an
input in the break before a stamp's bar (FeedTolerant), NSE's late open, a
daily input, a weekly and an intraday script, a reused host. Fail-before
(compiled against main 0411892): "558 checks, 131 failures", the first "[break
stamps] dated.bars[i].label == w.stamps[i]". After: "558 checks, 0
failures". tests/test_native_c_api.c, check_decision_session_day_of_a_dated_bar:
a C host's dated bar reads its stamp as its label and interval open, the
session's open as its first eligible instant, and the session's trading
date as its session day; against 0411892 4 failures ("a dated day's bar is
not labelled by its stamp"), after: ok.

Review (read-only, opus): the first cut relabelled the interval but a lookup
by the moved label resolved the day before the stamp -- the bar-open hook,
a magnified run's close, execution anchors and risk frames read the
previous day's interval and input slot, a C host the previous trading date,
the magnifier walked sub-bars from the stamp, and an input in the break
before a stamp could precede the label; the Pine adapter reads the label,
so no trade moved. Against the first cut the extended tests fail "558
checks, 102 failures" and 2 (the C host's day).

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
… where the finer feed rebuilds its own daily bars

TradingView backtests a daily chart that declares use_bar_magnifier = true
on its 60-minute intrabars (lab tv --no-note, the lane's synthetic
xc-dmag-dip-xau1d: 20 trades; the same script declared off,
xc-dmag-dip-off-xau1d: 18 -- the order of a day's extremes decides 2 of
them). scripts/run_strategy.py refused the magnifier on a daily chart
("chart 1D is daily or coarser", _declared_magnifier_plan), so
bystry1991-ema200-regime-bos-choch-2x-fvg-strategy on OANDA:XAUUSD 1D
walked its 2026-03-23 bar O -> L -> H -> C and took a next-bar stop-loss
where TradingView's hourly path enters at 23:15 and takes its +100 target
at 00:39 (lane TAIL-C, BLOCKED 1): moderate, pnl p90 150 %.

The harness (_declared_magnifier_plan, _daily_bars_rebuilt,
scripts/run_strategy.py):
- a daily chart runs on the lane's finer feed like an intraday one: input_tf
  1, script_tf the chart's, the magnifier on, bounded by the chart's own
  span (its first stamp to its last bar's end);
- the chart keeps its own daily bars. The finer feed must rebuild every one
  of them: over each bar's span, stamp to stamp, its first open, extremes,
  last close and summed volume are the bar's. OANDA:XAUUSD, OANDA:EURUSD and
  BINANCE:BTCUSDT's lanes do on every bar; NSE, NYSE, NASDAQ (official open
  and close), CME (settlement; a finer feed from 2023-08) and
  BINANCE:ETHUSDT.P (4 opens, 147 volumes) do not, and their charts run as
  they did, the plan saying which bar and field it missed;
- the chart feed is installed as the run's daily feed
  (native_security_feeds), whose stamps date the days (the kernel's
  day-label rule, previous commit), unless the run installs one already;
- both lane feeds end at TradingView's range end, inside the chart's last
  bar. The feed's part of that bar must open at its open and stay inside
  its extremes, and the bar is completed from the chart bar -- one input at
  its last minute carrying the rest of it (Strategy.run's ohlcv_tail_bar,
  _with_tail_bar) -- so it is calculated as the chart run's last bar is and
  a position still open closes at its close, as TradingView's does. A feed
  that stops before the last bar's first minute, or inside a chart of one
  bar, does not rebuild it (the magnified run would end a day short); an
  empty feed rebuilds nothing; float-spelled stamps read as the loader
  reads them; a chart spelled 1440 (inferred from its bars) runs as 1D;
- weekly, monthly and multi-day charts stay declared-not-run.

Tapes: tests/fixtures/daily_magnifier (four lab tv --no-note exports and the
bars they replay on: the lane's daily feed and its 1m feed aggregated on the
hour). tests/test_daily_magnifier_tapes.cpp replays them through the Pine
adapter: magnified with the daily feed 20/20 and 31/31, the -off twins on
the daily bars 18/18 and 31/31 -- entry and exit bar and price and the
entry comment's time / time_close; without the daily feed every magnified
trade is an hour late. Fail-before (against main 0411892's library): "27
checks, 2 failures" (0 of 20 and 0 of 31, every one an hour late). After:
"27 checks, 0 failures".

scripts/test_run_strategy_magnifier.py: the daily plan (1m feed, bounds,
the chart as the daily feed, an installed daily feed kept), the four ways a
feed does not rebuild a chart, the three ways it cannot complete the last
bar, an empty feed, float stamps, a 1440 chart, the cut last bar's
completion, the tail bar, and weekly / monthly / multi-day refusals.
Against 0411892 the module fails at import (no _with_tail_bar); against
the first cut (review, read-only opus) the four new tests fail (4
failures, 2 errors). After: 20 passed.

Lane replica (the pinned lab 16e3f228 verifier, lane templates' env and
feeds, this change on 7239ab3, codegen main 90bfa0b), every daily probe that
declares the magnifier:
  xauusd-1d bystry1991   moderate (pnl p90 150) -> excellent 1/1, magnified
  btcusdt-1d bystry1991  excellent -> excellent, magnified
  btcusdt-1d job-1361    excellent -> excellent 8/8, magnified, last bar completed
  eurusd-1d job-1361     excellent -> excellent 2/2, magnified, last bar completed
  ethusdtp-1d x2, es1-1d, nq1-1d x2, nifty-1d x2, f-1d: excellent, declared-not-run
Without the rebuild check and the completion, job-1361 fell to weak / strong
/ moderate on es1 / eurusd / btc / f and bystry1991 and job-1361 to minimal
on nifty-1d (official opens, settlement closes, a short finer feed, a range
end one bar early).

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…ngView's calendar for the symbol, where the run holds it

TradingView reads the bar after the current one from its calendar for the
chart's symbol, not from the chart's bars: time("", "", -1), time_close("",
-1), time("", -2), time("D", 0, -1), a timeframe's bar stepped back
(time("60", 0, 1)), session.islastbar and session.islastbar_regular (lab tv
--no-note, the lane's synthetic xc-flags-* tapes; the first bar of a day
stays the chart's). OANDA:XAUUSD's calendar is a session every weekday from
17:00 ET to 17:00 ET, holidays included; its feed has no bar from 17:00 to
18:00 ET, none on Good Friday, Christmas or New Year's Day, and stops early
on US holidays -- so on job-2660-pinecoderstasc-tasc-2026-06-one-percent-a-
week-adaptive, which closes at session.islastbar_regular when the next bar's
weekday is lower and enters when it is Monday, the engine's feed reading
parted from TradingView in every holiday week: xauusd-15 moderate 56/48,
xauusd-1d strong 56/54 (lane TAIL-E, BLOCKED). NASDAQ:AAPL's, NYSE:F's and
NSE:NIFTY's calendars carry their exchanges' holidays and early closes, and
their lanes' feeds hold exactly those sessions (xc-cal-aapl15 / -f15 /
-nifty15 over 2025-04 .. 2026-05: no day, open or close parts).

The calendar becomes a pinned run input (TradingView's own, captured):
- scripts/symbol_calendar.py makes a pineforge-symbol-calendar/v1 document
  (per session day [open_ms, close_ms], and the tape's provenance) from a
  lab tv tape of the lane's synthetic xc-symbol-calendar probe, whose first
  bar of every day spells that day's time("D") / time_close("D") and the
  next three days'. tests/fixtures/symbol_calendar holds OANDA:XAUUSD's and
  OANDA:EURUSD's (2021-05 .. 2026-05, 1308 days each) and the AAPL, F and
  NIFTY controls;
- scripts/run_strategy.py: where the case runner names one
  (PINEFORGE_RUN_SESSION_CALENDAR, held to PINEFORGE_RUN_SESSION_CALENDAR_SHA256),
  the calendar of the run's symbol travels as syminfo metadata
  ("symbol_calendar_days", "symbol_calendar_open:<i>", "_close:<i>") -- the
  channel the harness's other adapter inputs use, so no C-ABI export or
  kernel file changes; another symbol's calendar is refused, and the run's
  fingerprint names it (runtime.session_calendar: its day count and the
  sha256 of its days);
- the Pine host (PineStrategyHost::set_symbol_calendar, src/source) installs
  it when the run begins, consuming the days the metadata named (a day the
  count names but no key carries fails the run naming it, never an earlier
  run's; a day key whose index is no decimal number is no day; a count that
  is no number >= 0 removes the calendar) and, inside the calendar's days:
  a regular intraday bar is session.islastbar(_regular) when the calendar's
  next slot opens another day (scheduler_update_session_state);
  pine_time_offset's chart bars ahead on an intraday or 1D chart, a
  timeframe's bars stepped either way and a day's open and close are the
  calendar's (symbol_calendar_open_from / _open_before / _day). A W, M or
  multi-day chart's own bars are no calendar day and read the history. Bars
  behind stay the history's; outside the calendar and with none installed
  every reading is the feed's, as before. No kernel call and no state is
  added.

Tapes and tests: tests/test_symbol_calendar_tapes.cpp replays the five
OANDA:XAUUSD windows (Good Friday, Memorial Day, Independence Day,
Thanksgiving, year end): 18,340 cells, 0 differ with the calendar, 391 with
the feed; AAPL's Thanksgiving week 0 differ with its calendar and without;
lane TAIL-E's te-time-bb-chart-xau15 / -tf-xau15: 12,144 cells, 0 differ
with the calendar, the 484 its test names without; the metadata transport,
a missing day's refusal and out-of-order days, the days consumed per run on
a reused host, a malformed day key, a count that removes the calendar; W
and M charts of 40 bars each read alike with the calendar and without.
Fail-before (against main 0411892, which holds TAIL-E's
pine_time_offset): "no member named 'set_symbol_calendar'". After: "93
checks, 0 failures". scripts/test_symbol_calendar.py: the
fixtures' calendars are their tapes, OANDA's holidays, the 17:00 ET hour
and the one correction, the refusals, the metadata, the run fingerprint and
inputs_run_kwargs; against 0411892 "No module named 'symbol_calendar'".
After: 9 passed. Review (read-only, opus): against the first cut the new
host checks fail "93 checks, 8 failures" (W and M: 40 of 40 bars read
otherwise) and the fingerprint test KeyError 'session_calendar'.

Lane replica (the pinned lab 16e3f228 verifier, lane templates' env and
feeds, this change on 7239ab3 with TAIL-E's pine_time_offset, codegen
main 90bfa0b with lane TAIL-E's codegen picks, which lower time() with
bars_back), job-2660:
  xauusd-15   moderate 56/48 -> excellent 48/48 (calendar xc-cal-xau15)
  xauusd-1d   strong 56/54   -> excellent 54/54 (the same calendar)
  eurusd-15, eurusd-1d  excellent 56/56 -> excellent 56/56 (xc-cal-eurusd15-full)
  aapl-15, f-15  the same grade with the calendar and without it
Only job-2660 reads these readings in the population (session.islastbar*
or time() / time_close() with bars_back: 12 probes, one per lane).

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Floors (scripts/ci_verify.py), each comment naming the rows, on main
0411892 (INT30 and TAIL-I):
- KERNEL_MIN_TESTS 298 -> 300: test_native_day_labels (kernel-only) and
  test_symbol_calendar (a source-free harness suite);
- RELEASE_MIN_TESTS 786 -> 790: those two plus the source-bound
  test_daily_magnifier_tapes and test_symbol_calendar_tapes (TAIL-E's
  test_time_bars_back_tapes, which the lane picked on 7239ab3, is main's
  own row since INT30);
- EXCLUDED_REGISTERED_MIN debug / sanitizers / native 767 / 767 / 776 ->
  771 / 771 / 780, the same four rows in each, and scripts/test_ci_verify.py's
  pin of it with them.
ctest -N on main and on this tree, configured alike, differ by exactly these
four rows.

Doc anchors are re-anchored once, on the rebased tree, in the next commit.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…gin reads no earlier run's day labels, a calendar that fails to install leaves none, and every doc anchor is re-anchored once

A second read-only review (opus, "approve with comments") of the day-label
and calendar fixes found:

- the C host read every bar's session day at max(script_interval_open_ms,
  script_interval_eligible_open_ms), which also moved 2D, W and M bars on a
  masked session whose period opens on a day that does not trade (February
  2025 on 0930-1600:23456: nominal Sat 02-01 -> Mon 02-03), an ABI field
  outside the lane. It now does so only on a 1D script, where only a daily
  stamp moves a bar's label before its session's open
  (native_c_host.cpp; the pf_native_decision_v1 doc says so). Witness:
  tests/test_native_c_api.c check_decision_session_day_of_a_masked_month --
  the February bar keeps its nominal open's day; against c7df82e6
  (r5/xau-cal-7239^, this code before this commit) "a masked month's day
  moved to its first session". The check pins main's reading, so it passes
  on main 0411892, where no label moves. The dated-day check still holds.
- a host reused across runs kept the previous run's day labels through the
  next begin until prepare_day_labels ran at its end; they are cleared where
  the begin clears its interval cache (prepare_public_begin).
- deliver_tick read a print's input slot at its raw stamp while its script
  interval went through day_label_origin; both read the bar's own now.
- a calendar announcement that fails to install (a day missing) left the
  earlier run's calendar installed for a later run that announces nothing;
  the announcement now replaces it, so none is left
  (install_symbol_calendar_metadata). Witness:
  tests/test_symbol_calendar_tapes.cpp, "96 checks, 0 failures"; against
  c7df82e6 "96 checks, 2 failures".

Not changed, as reported: _infer_bar_interval_ms (pre-existing, 76482e6)
reads a chart's first gap and parses stamps with int(); lanes pass
script_tf, so the daily route never infers. A hand-written malformed
calendar metadata makes the fingerprint's calendar digest raise, which main
already turns into "fingerprint: skipped".

Doc anchors, once, on the tree rebased onto main 0411892: of 1743, 275
did not resolve (main's digits moved by this lane's lines, and the lane's
own); check_doc_anchors.py --fix took 75, reanchor_doc_citations.py
--ref 0411892 --ref 12e3e507 (the lane's head before the rebase,
r5/xau-cal-7239) carried 181 by line map, and 21 were set by hand from a
main-to-this-tree line map: the four floor-constant citations (ci_verify.py
:320, :587; CONTRIBUTING.md, docs/pages/contributing-llm.md), native_c_api.h
:1485 (three pages) and :2137-2141, ADR-0001's pine_strategy_host.cpp
citations (:1872, :1982, :1933, :1901), the lane's own ADR row (:1958,
:2529, :2011), native-feature-parity.md's :3115 and :2005, and two
native_c_host.cpp citations (:4048, :3232-3236). check_doc_anchors.py: all
1743 resolve; check_doc_lint.py clean.

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

import run_strategy
import unittest
from pathlib import Path

import run_strategy
@luisleo526
luisleo526 marked this pull request as ready for review September 29, 2026 10:18
@luisleo526
luisleo526 merged commit 35db01c into main Sep 29, 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/xau-cal 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