{
  "book": "Workshop and trading companions",
  "series": "Illustrated Market Guides",
  "release": "merrick-2026-10-20",
  "pine_version": 6,
  "validation_date": "2026-10-16",
  "validation_scope": "Workshop 01\u201328: prior 28 compilation passes, 27 representative runtime checks, 64 observations; 18 runtime subscription-blocked. Companions 29\u201333: prior compilation/runtime observations and selected checks. All behavioral validation partial. Script 33 can conservatively round down an extra quantity increment. No new platform testing or performance claim.",
  "scripts": [
    {
      "number": 1,
      "file": "01_first_average.pine",
      "title": "Your first moving average",
      "topic": "Foundations",
      "description": "See how five closing prices become one line on the price chart.",
      "chapter": 3,
      "kind": "Indicator",
      "sha256": "35050dc00bdd4c6769a613382aa5b41a21aea5515f09a72e538beff808629783",
      "bytes": 201,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "NASDAQ:AAPL; 1D; regular session; ordinary candles",
      "inputs": "Length 5",
      "expected": "Overlay average; matches built-in SMA of close with zero offset on completed bars"
    },
    {
      "number": 2,
      "file": "02_trend_workbench.pine",
      "title": "Trend workbench",
      "topic": "Trend & momentum",
      "description": "Compare price with a prior high and a moving average; mark confirmed candidates.",
      "chapter": 5,
      "kind": "Indicator",
      "sha256": "bb55497e83ac5154d9a6ca21f4a63aed21be8d138354878281f1f39fff5945e6",
      "bytes": 685,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "NASDAQ:AAPL; 1D; regular session",
      "inputs": "Prior bars 5; average 10",
      "expected": "Two price references and triangles only on completed qualifying bars"
    },
    {
      "number": 3,
      "file": "03_stretch_meter.pine",
      "title": "Stretch meter",
      "topic": "Mean reversion",
      "description": "Measure distance from a prior mean in standard-deviation units.",
      "chapter": 6,
      "kind": "Indicator",
      "sha256": "faa9f62ed91613415b5243086f4bd76160eb4da912dc8f622b929dc3a4fcfd28",
      "bytes": 649,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "NASDAQ:AAPL; 1D",
      "inputs": "Reference 20; distance 2",
      "expected": "Separate-pane standardized distance and completed low-extreme dots"
    },
    {
      "number": 4,
      "file": "04_relative_strength.pine",
      "title": "Relative strength",
      "topic": "Trend & momentum",
      "description": "Compare price returns for two symbols over the same window.",
      "chapter": 7,
      "kind": "Indicator",
      "sha256": "c165a9d39422b60f14914a12e7190849a9dbe79636388fc786dd0d8b9e702856",
      "bytes": 861,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "AMEX:SPY; 1D; matching regular sessions",
      "inputs": "Comparison NASDAQ:QQQ; 20 bars",
      "expected": "Two percentage returns and percentage-point difference"
    },
    {
      "number": 5,
      "file": "05_swing_diary.pine",
      "title": "Swing diary",
      "topic": "Swings & patterns",
      "description": "Mark confirmed pivots and learn why a swing needs later bars to confirm.",
      "chapter": 8,
      "kind": "Indicator",
      "sha256": "d1a56563b13f42267e4435ec57bee8d51ac7c0a2f768b56a959cfa8533b47126",
      "bytes": 775,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "NASDAQ:AAPL; 1D",
      "inputs": "Wing 2",
      "expected": "Stepped known levels; circles on confirmation bars"
    },
    {
      "number": 6,
      "file": "06_range_probes.pine",
      "title": "Range probes",
      "topic": "Swings & patterns",
      "description": "Watch price test a manually chosen, frozen trading range.",
      "chapter": 10,
      "kind": "Indicator",
      "sha256": "33d393ac627ed100166da1ab63f950ac99212ea3cc3cd592a321eeeb7a8de054",
      "bytes": 913,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "Any ordinary daily chart with an already identified range",
      "inputs": "Set real floor/ceiling and begin date; defaults are synthetic",
      "expected": "Frozen lines and lower/upper probes after observation starts"
    },
    {
      "number": 7,
      "file": "07_gap_zone.pine",
      "title": "Three-candle gap zone",
      "topic": "Swings & patterns",
      "description": "Draw the latest bullish gap geometry. A gap does not prove hidden orders.",
      "chapter": 11,
      "kind": "Indicator",
      "sha256": "54a80b682147766c0abeaf83a61b5619169fbd65310cc0a8cf2ed2cf05c9dcac",
      "bytes": 910,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "NASDAQ:AAPL; 1D or 60 minutes",
      "inputs": "Minimum ticks 1",
      "expected": "Latest bullish outer-bar interval; overlap circles and failed-close crosses"
    },
    {
      "number": 8,
      "file": "08_reclaim_watch.pine",
      "title": "Reclaim watch",
      "topic": "Swings & patterns",
      "description": "Flag a confirmed close back above a prior low after trading below it.",
      "chapter": 12,
      "kind": "Indicator",
      "sha256": "ae97195faa462c5895515338bb3c2e23641f817f5f175d81bd58daa7898679bc",
      "bytes": 543,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "NASDAQ:AAPL; 1D",
      "inputs": "Prior bars 5 for audit, then 20",
      "expected": "Prior-low line and completed reclaim triangles"
    },
    {
      "number": 9,
      "file": "09_abcd_ruler.pine",
      "title": "ABCD ruler",
      "topic": "Swings & patterns",
      "description": "Check manually entered swing distances without claiming to discover a pattern.",
      "chapter": 13,
      "kind": "Indicator",
      "sha256": "9e27f8b496997ada3a4b728a5142cf4d57ac334126e14e6765a515eaa6324a33",
      "bytes": 726,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "Any ordinary chart; pane output is input-only",
      "inputs": "A120 B100 C112 D92 tolerance .05",
      "expected": "Ratio 1; retracement .6; pass line 1"
    },
    {
      "number": 10,
      "file": "10_rate_grid.pine",
      "title": "Price-per-bar grid",
      "topic": "Swings & patterns",
      "description": "Draw a chosen rate of price change. Screen angles depend on chart scale.",
      "chapter": 14,
      "kind": "Indicator",
      "sha256": "eab6a6bd9f294854e3722dc0b118ea9d1562f7a86e6bb22ccecbe869d339c200",
      "bytes": 563,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "Ordinary 1D chart; linear scale",
      "inputs": "Loaded anchor bar, price100, rate1",
      "expected": "At age0/4, guides100/104; half102 and double108 at age4"
    },
    {
      "number": 11,
      "file": "11_anchored_vwap.pine",
      "title": "Anchored VWAP",
      "topic": "Volume & VWAP",
      "description": "Build a bar-based, volume-weighted reference from a chosen start time.",
      "chapter": 15,
      "kind": "Indicator",
      "sha256": "dded0ddf686d20f7a07dee9c5408ca770117237547572593ce5d059dadc8c0ea",
      "bytes": 571,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "NASDAQ:AAPL; 5 minutes; reported volume",
      "inputs": "Anchor at loaded opening timestamp",
      "expected": "Cumulative typical-price weighted estimate from anchor"
    },
    {
      "number": 12,
      "file": "12_session_vwap.pine",
      "title": "Session VWAP",
      "topic": "Volume & VWAP",
      "description": "Reset a volume-weighted reference with an explicit session and time zone.",
      "chapter": 15,
      "kind": "Indicator",
      "sha256": "09b2938ccb23902dcd53863924f335ecb17af4f96cf796dce3af74400cca905f",
      "bytes": 812,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "NASDAQ:AAPL; 5 minutes",
      "inputs": "0930-1600 America/New_York",
      "expected": "Session segments reset each local date"
    },
    {
      "number": 13,
      "file": "13_activity_lens.pine",
      "title": "Activity lens",
      "topic": "Volume & VWAP",
      "description": "Compare reported volume and close location. These OHLCV proxies are not order flow.",
      "chapter": 16,
      "kind": "Indicator",
      "sha256": "a75e851d10deb901e81d36a797c41afc61bc8e99f2abecb27aaf274243efc856",
      "bytes": 599,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "NASDAQ:AAPL; 1D; valid volume",
      "inputs": "Prior volume20",
      "expected": "Volume multiples as columns and close location between -1 and1"
    },
    {
      "number": 14,
      "file": "14_pair_distance.pine",
      "title": "Pair distance",
      "topic": "Relative value",
      "description": "Explore a two-symbol relationship and its standardized distance; relationships can break.",
      "chapter": 18,
      "kind": "Indicator",
      "sha256": "173f054113a657931f69a4bf9bbb6c548a41a7969b18099c5f48290b1df04c3d",
      "bytes": 942,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "NYSE:KO; 1D; matching session/adjustments",
      "inputs": "Comparison NASDAQ:PEP; coefficient1; reference60",
      "expected": "Standardized prior-window price spread with gaps"
    },
    {
      "number": 15,
      "file": "15_contract_spread.pine",
      "title": "Dated-contract spread",
      "topic": "Relative value",
      "description": "Compare named futures contracts with matching units and aligned bars.",
      "chapter": 19,
      "kind": "Indicator",
      "sha256": "867ecb7e584d3d44b8528bcbc621e50a4bd08413226d5feec37c0e69910d04d5",
      "bytes": 723,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "CME_MINI:ESZ2026; ordinary1D",
      "inputs": "Near ESZ2026; far ESH2027, full prefixes",
      "expected": "Near-minus-far index-point line"
    },
    {
      "number": 16,
      "file": "16_confirmed_context.pine",
      "title": "Confirmed higher-timeframe context",
      "topic": "Foundations",
      "description": "Use a completed higher-timeframe reference with explicit confirmation timing.",
      "chapter": 20,
      "kind": "Indicator",
      "sha256": "b935117644b1ef1b1181667c572f75359645d041b021d340cf7ba6c952ed6943",
      "bytes": 521,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "NASDAQ:AAPL; 1D",
      "inputs": "Higher1W; average10",
      "expected": "Stepwise previous completed weekly average"
    },
    {
      "number": 17,
      "file": "17_strategy_lab.pine",
      "title": "Breakout laboratory",
      "topic": "Strategy testing",
      "description": "Turn a simple breakout rule into a single-chart broker-emulator experiment.",
      "chapter": 21,
      "kind": "Strategy",
      "sha256": "c59f57883c3cbffcd54a79f925b8dc9c0d126c9de2263e453c092d45aa04de48",
      "bytes": 1210,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "NASDAQ:AAPL; ordinary1D; one affordable share",
      "inputs": "20 prior highs;10 exit average;2020-2025 window initially",
      "expected": "Simulated entries/exits and two references in Strategy Tester"
    },
    {
      "number": 18,
      "file": "18_optional_footprint.pine",
      "title": "Optional footprint delta",
      "topic": "Volume & VWAP",
      "description": "Request native footprint data where the plan, symbol and chart support it.",
      "chapter": 17,
      "kind": "Indicator",
      "sha256": "615e0777e83a1a7f0a2fd7ba42928ecb6752e65de30e458cca6debf6802fb3b2",
      "bytes": 359,
      "compiler": "Passed",
      "runtime": "Subscription-blocked",
      "behavior": "Blocked",
      "setup": "Supported ordinary intraday volume chart; Premium/Ultimate",
      "inputs": "Ticks per row10",
      "expected": "Categorized delta columns or absent result where data missing"
    },
    {
      "number": 19,
      "file": "19_trend_breakout.pine",
      "title": "Trend breakout \u00b7 ALDER",
      "topic": "Trend & momentum",
      "description": "Test the book\u2019s price approximation with a prior high, mean filter and frozen range stop.",
      "chapter": 44,
      "kind": "Strategy",
      "sha256": "58b4bbcde3c6a20b7086f0ee99a22f170ebf344d55f0d41df25f267110dd5154",
      "bytes": 1741,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "Daily standard candles; formation 5; multiple 2; one share. Keep fees at 2 per order for the source-style cost example.",
      "inputs": "See chapter44 and source inputs",
      "expected": "Prior high and average appear after warm-up; entries follow qualified closes; the stop rises after completed holding closes."
    },
    {
      "number": 20,
      "file": "20_average_cross.pine",
      "title": "Two-average crossover",
      "topic": "Trend & momentum",
      "description": "Test a short and long moving-average crossover with explicit emulated orders.",
      "chapter": 44,
      "kind": "Strategy",
      "sha256": "355405d3b7b887c13eaa796edb40c785cb9dbf1e17622dd9418cd5d5341792d5",
      "bytes": 868,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "Daily standard candles; fast 2, slow 4; one share.",
      "inputs": "See chapter44 and source inputs",
      "expected": "Two averages and trade markers; persistent fast-above-slow bars do not keep entering."
    },
    {
      "number": 21,
      "file": "21_reversion.pine",
      "title": "Mean reversion \u00b7 BIRCH",
      "topic": "Mean reversion",
      "description": "Test a prior-window stretch, a mean target and a time exit.",
      "chapter": 44,
      "kind": "Strategy",
      "sha256": "ff60dadf7a711ebd3f90690ecc6166807c902b7be069ba13eccd985e89d9561c",
      "bytes": 1557,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "Daily standard candles; formation 5; moving target off; one share.",
      "inputs": "See chapter44 and source inputs",
      "expected": "Price bracket and time exits appear; fixed target stays level for each trade."
    },
    {
      "number": 22,
      "file": "22_strict_fractal.pine",
      "title": "Strict fractal breakout",
      "topic": "Swings & patterns",
      "description": "Wait for a strict fractal to confirm before testing a breakout and protective low.",
      "chapter": 44,
      "kind": "Strategy",
      "sha256": "bf31fe7ef150dcf590f609c1871345d4141240d2484951966e62021a69b1f2af",
      "bytes": 2516,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "Daily candles; Teeth filter on; lifetime 5. Use manual source comparisons in FR-1/FR-2.",
      "inputs": "See chapter44 and source inputs",
      "expected": "Orders appear only after two right-hand bars; ties reject; stops trail confirmed lows."
    },
    {
      "number": 23,
      "file": "23_range_retest.pine",
      "title": "Frozen-range retest",
      "topic": "Swings & patterns",
      "description": "Test one breakout-and-retest candidate using a manually fixed range.",
      "chapter": 44,
      "kind": "Strategy",
      "sha256": "270cd1314f1787731d12a0fdba7d0693dba5b850afaa74bc11610bef50796fab",
      "bytes": 1882,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "Daily candles; enter a known range and decision time; one share.",
      "inputs": "See chapter44 and source inputs",
      "expected": "One breakout/retest candidate at most, with manual range levels."
    },
    {
      "number": 24,
      "file": "24_plan_runner.pine",
      "title": "Manual plan runner",
      "topic": "Strategy testing",
      "description": "Enter a confirmation time and price levels to inspect an emulated trade plan.",
      "chapter": 44,
      "kind": "Strategy",
      "sha256": "c39ab1279db0fb09359a8c7d5b09fc2b5c0a14991442746bd254426474627d6a",
      "bytes": 1875,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "Standard candles. Enter an actual chart confirmation close time and prices from W1. Choose one share for initial validation.",
      "inputs": "See chapter44 and source inputs",
      "expected": "Exactly one manually qualified bracket experiment; no pattern recognition."
    },
    {
      "number": 25,
      "file": "25_vwap_reclaim.pine",
      "title": "Session VWAP reclaim",
      "topic": "Volume & VWAP",
      "description": "Test a session reclaim with an entry cutoff, bracket and timed flattening logic.",
      "chapter": 44,
      "kind": "Strategy",
      "sha256": "36827e9d2e1a45b1a2b21e94bb8cf33e394b476dcafdbe6309751599e47bd2d5",
      "bytes": 1796,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "15-minute standard candles; New York 09:30\u201316:00; cutoff 15:45; default 60/60 ticks; one share.",
      "inputs": "See chapter44 and source inputs",
      "expected": "VWAP resets each day; entries after reclaims; time exits should have a subsequent session bar available."
    },
    {
      "number": 26,
      "file": "26_lantern.pine",
      "title": "Timed experiment \u00b7 LANTERN",
      "topic": "Strategy testing",
      "description": "Explore a prior-three-close rule and timed exit using fixed quantity.",
      "chapter": 44,
      "kind": "Strategy",
      "sha256": "714ee453f6c8038d28bc9d31f61ec732262144f56af9f6f239b89b3ef77341e2",
      "bytes": 863,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "Daily standard candles; ten shares fixed in the entry; no ordinary stop or target.",
      "inputs": "See chapter44 and source inputs",
      "expected": "Breakouts of the prior three closes and timed exits, not the old script 17 high-breakout/average-exit rule."
    },
    {
      "number": 27,
      "file": "27_pattern_ruler.pine",
      "title": "Manual harmonic ratio audit",
      "topic": "Swings & patterns",
      "description": "Audit user-entered pattern ratios. This ruler does not scan or validate a trade.",
      "chapter": 44,
      "kind": "Indicator",
      "sha256": "265398b889713beea0f53cc9e5ea143147574fc4423c3efa29123a9ce374c906",
      "bytes": 1699,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "Any standard price chart; use the exact HARM example inputs; pane shows constant ratio lines.",
      "inputs": "See chapter44 and source inputs",
      "expected": "Four ratio lines and a passing background for the selected limited audit."
    },
    {
      "number": 28,
      "file": "28_gann_swings.pine",
      "title": "Two-session swing map",
      "topic": "Swings & patterns",
      "description": "Follow a simplified Gann swing rule from a manual starting point without backdating.",
      "chapter": 44,
      "kind": "Indicator",
      "sha256": "9c84df23a951213e701955697409e350601bb69f93d84e7b22e86aae31e3b6fb",
      "bytes": 1140,
      "compiler": "Passed",
      "runtime": "Representative smoke check passed",
      "behavior": "Partial",
      "setup": "Daily standard candles; choose the source exercise start and initial up direction.",
      "inputs": "See chapter44 and source inputs",
      "expected": "Dots at confirmation times; inside bars reset the count; outside bars are shaded."
    },
    {
      "number": 29,
      "file": "29_opening_range_audit.pine",
      "title": "Opening range audit",
      "topic": "Trading companions",
      "description": "Observe the first qualifying close after a completed opening range; no orders or fill simulation.",
      "chapter": null,
      "kind": "Indicator",
      "sha256": "fe45b344b75b57b62d2503d12d45936806aa38fdbb36639333e2cefce9184807",
      "bytes": 1545,
      "compiler": "Prior compilation observation",
      "runtime": "Prior representative runtime observation",
      "behavior": "Partial",
      "setup": "15-minute standard candles; New York regular session.",
      "inputs": "Use the matching book and the named source inputs.",
      "expected": "Observe the first qualifying close after a completed opening range; no orders or fill simulation."
    },
    {
      "number": 30,
      "file": "30_confirmed_level_audit.pine",
      "title": "Confirmed level audit",
      "topic": "Trading companions",
      "description": "Inspect levels only after confirmation; annotations are not advance knowledge.",
      "chapter": null,
      "kind": "Indicator",
      "sha256": "5cc7bbcb47670bec8f287f00ba1db33aaa0d42ac37d8b69c2a2549c24fa3e7e0",
      "bytes": 941,
      "compiler": "Prior compilation observation",
      "runtime": "Prior representative runtime observation",
      "behavior": "Partial",
      "setup": "Standard candles; wait for the configured pivot confirmation.",
      "inputs": "Use the matching book and the named source inputs.",
      "expected": "Inspect levels only after confirmation; annotations are not advance knowledge."
    },
    {
      "number": 31,
      "file": "31_daily_volume_context.pine",
      "title": "Daily volume context",
      "topic": "Trading companions",
      "description": "Compare completed-bar price and volume context; this is not order flow.",
      "chapter": null,
      "kind": "Indicator",
      "sha256": "448e3abf66a5db2271efcb52fec7c478b000da458868776a5bb1ddfdaf55f729",
      "bytes": 934,
      "compiler": "Prior compilation observation",
      "runtime": "Prior representative runtime observation",
      "behavior": "Partial",
      "setup": "Daily standard candles with reported volume.",
      "inputs": "Use the matching book and the named source inputs.",
      "expected": "Compare completed-bar price and volume context; this is not order flow."
    },
    {
      "number": 32,
      "file": "32_spot_swing_observer.pine",
      "title": "Spot swing observer",
      "topic": "Trading companions",
      "description": "Observe confirmed setup conditions; the tool has no position state or execution model.",
      "chapter": null,
      "kind": "Indicator",
      "sha256": "9984f0308e758ec165b74e0ef849ca76a716479bfe62be8894dc59f9b858760a",
      "bytes": 833,
      "compiler": "Prior compilation observation",
      "runtime": "Prior representative runtime observation",
      "behavior": "Partial",
      "setup": "Daily standard candles; check venue and daily boundary.",
      "inputs": "Use the matching book and the named source inputs.",
      "expected": "Observe confirmed setup conditions; the tool has no position state or execution model."
    },
    {
      "number": 33,
      "file": "33_spot_risk_calculator.pine",
      "title": "Spot risk calculator",
      "topic": "Trading companions",
      "description": "Compare risk and cash constraints. At a floating-point boundary, quantity can round down one extra increment.",
      "chapter": null,
      "kind": "Indicator",
      "sha256": "5b95c74ab90df2300aa8a9cbb755a4420f2d43deef4a31abd5489dd0c4106898",
      "bytes": 1573,
      "compiler": "Prior compilation observation",
      "runtime": "Prior representative runtime observation",
      "behavior": "Partial",
      "setup": "A standard chart; enter the lesson\u2019s long-only planning inputs.",
      "inputs": "Use the matching book and the named source inputs.",
      "expected": "Compare risk and cash constraints. At a floating-point boundary, quantity can round down one extra increment."
    }
  ]
}
