Sentinel Suite · NinjaTrader 8 · living document·Docs home →

Sentinel — Product Ladder & Open-Source Packaging

Living document (started 2026-07-10). This is the product mapwhat a user adopts, how deep they go, and how the pieces are packaged. It is deliberately distinct from ROADMAP.md, the pipeline map (how data flows: sense → decide → act → record → learn). Same system, two lenses. When they disagree, the ROADMAP owns engineering sequence; this doc owns packaging & product shape.

North star: open-source all of Sentinel, designed so the plumbing works no matter which rung a user is standing on. Open source and modularity are the same cut — if every rung must stand alone as its own bundle over a shared runtime, you cannot accidentally build a monolith.

Adoption tiers, not price tiers. Everything is free, so the ladder is a depth-of-adoption path — how far a user chooses to climb — not a pricing menu. "Focus" therefore means what we release first and point newcomers at, not what we sell first (see §7).


1. Scope — what "Sentinel" means here

This document concerns only the Sentinel-owned files in bin\Custom. The unrelated commercial vendor tools in the same tree (FlowMatriX, PredatorX, NinZaRenko, GoldenAxe, EliteLicenser, etc.) are out of scope and are never part of any Sentinel bundle or license. Contributed work inside Sentinel was released with full permission for open-source use (to be recorded in NOTICE/AUTHORS — §6).


2. The two axes of value

Sentinel spans two orthogonal axes that compose but are independently valuable:

They compose, but appeal to different people at different depths. This mirrors the publish/consult decoupling already built into the code: aesthetics and intelligence are separable by design.


3. The product ladder — the spine

Each rung stands alone (stop here and it's genuinely useful on its own) and unlocks the next. These are adoption tiers — how deep a user climbs — and a user climbs only as far as they want.

Rung Product Stands alone because… Audience
0 Sentinel Skins — 6 themes + SentinelSkin makes any NT chart beautiful; the widest, easiest entry everyone
1 The Sensors — SentinelTrend, ADXPro, WoodiesCCIPro, VolEnvelope, CompressionBase, LiquidityWalls, God Reversal, WAE (the 8 hero signals) + Clock, Participation, Location, MTF, Intermarket (the 5 axes) + the BarTypes (SentinelTBars/TbarsCount + SentinelFlux, the order-flow-imbalance bar-type axis) each hero is a gorgeous, functional standalone indicator indicator shoppers
2 The Recorder + Log — the capture engines (excursion corpus + MAE/MFE journaling) records every trade's outcome to JSONL, over any strategy data-minded traders
3 The Observatory — the human interface to the excursion corpus (consolidates Lens + the Dashboard Excursion tab + SentinelExcursions) explore / curate / understand your recorded outcomes; the human counterpart to the ML Lab the "understand your trading" crowd
4 The Council one honest verdict fused from all your sensors — a confluence dashboard confluence traders
5 The Deck (+ Cockpit + Dashboard) advanced manual chart trader / command surface discretionary traders
6 The Prop-Survival Kit — Risk + Governor + Kill-switch + Gate + auto-flatten + reconnect reconciliation keep your funded account alive prop-firm traders (large, urgent market)
7 The Bridge autopilot that consumes the Council automation crowd
8 The Copier mirror one account to many, prop-rule-aware multi-account / prop
9 Helm — discretionary human interdiction over any running setup (move stop / close early / skip / pause; publishes a HelmIntent, never touches an order). ✅ BUILT 2026-07-15 (Core v1.34.0 seam · Bridge v0.3.0 consumer · Cockpit v0.5.0 ⑤ Helm rail; plumbing tier live-validated) oversight that works over the Deck and the Bridge — the human hand on the tiller hands-on overseers
10 The ML Lab — pairs with the Observatory (the machine counterpart over the same corpus); now a BUILT data platform (SQLite corpus Lab\db\sentinel.db + live JSONL→SQLite ingester + Streamlit :8501 + Grafana :3000) the system fits its own weights from your outcomes top tier, the believers

Rung 6 is both a product and a runtime layer (§4, L2). The Safety layer is the survival kit, surfaced through the Cockpit/Dashboard. Some rungs are infrastructure turned into a product — build once, sell as a rung. Rung 9 (Helm) is the discretionary sibling of Rung 6: the survival kit is automatic hard limits, Helm is the human hand on the tiller — distinct capabilities, distinct products.

The ladder is a light tree, not a strict line. Rung 3 opens an analysis branch (Recorder → Observatory ↔ ML Lab) that runs parallel to the execution branch (sensors → Council → Deck/Bridge), both rising over the shared runtime (§4). The Observatory (Rung 3) and the ML Lab (Rung 10) are the human and machine consumers of the same excursion corpus — the analysis-tier mirror of the Deck↔Bridge (manual↔auto) duality.

Cross-cutting foundations (they span the rungs — NOT rungs themselves)

You don't climb to these; they are the ground the ladder stands on and the tissue between rungs:

Still-open candidate products (genuine maybes)


4. The runtime floor — what makes "any rung" real

Every rung bundles a shared substrate. That substrate is not one floor — it is layers, and rungs only ever depend downward.

Layer Contains Needed by Dependency
L0 · Skin palette, Painter, CardLayout, themes (SentinelSkin.cs) everyone who draws none
F · Foundation SettingsDir, Log, SeamStore<T>, ScopeOf/BarTag, InstrumentRoot, Conditions, Alerts, Ledger, State (audit/persistence primitives), + the context vetoes (kill / instrument-kill / news / rollover) everyone none (above NT)
L1 · Bus/Seams the publish/consult registry — all 13 …State types + Set/Get, EyeVerdict, BrickLog, fleet/assist state sensors, Council → F only
L2 · Safety the account-risk decision logic — feed-health, CanEnter, governor, drawdown, profiles, session, SizedQuantity/TickValue/SizeForRisk, order guards, GateEntry anything that trades (Deck, Bridge, Copier, Risk) → F only

The one rule that keeps every rung standalone: a file may only reference files in its own layer or below. L1 never references L2; L2 never references L1. (Verified today — §5.)

The NT one-assembly caveat

NinjaTrader compiles everything in bin\Custom into a single DLL, so we cannot ship literal separate assemblies. But distribution ≠ installation: a "Sentinel Skins" download is just the L0 files; "Sentinel Sensors" is L0 + F + L1 + the indicators; each bundle is self-contained and installs into the one assembly fine. The layering is enforced by dependency discipline, not by assembly boundaries.


5. Core-split finding (2026-07-10 structural read)

SentinelCore_v1_0_0.cs is one 3,215-line file, one giant static class SentinelCore with ~30 nested types. Verdict: splittable, not entangled — and the dependency arrows already point the right way.

Mechanism — split without API churn: make it public static partial class SentinelCore across three files — SentinelCore.Foundation.cs, SentinelCore.Bus.cs, SentinelCore.Safety.cs. Same class, same call sites, zero churn across the ~40 consumer files. A partial class missing one partial still compiles as a smaller class → this is the distribution tiering: a Rung-1 bundle ships Foundation + Bus only, and the class simply won't have GateEntry (which no sensor calls). The class shrinks gracefully per rung.

Two relocations the split surfaces: 1. Conditions + Alerts are physically filed among Safety but are Foundation utilities (the Bus depends on Conditions) → move them to SentinelCore.Foundation.cs. Confirm Conditions itself doesn't reach back into Safety before committing. 2. The context vetoes (kill / instrument-kill / news / rollover) are read by both the Council (L1-side veto) and the Gate (L2) → pure state stores, so they live in Foundation, preserving the downward-only rule.

Caveat: arrows verified by structural grep, not a full method-by-method read; re-compile each partial against only its downward deps to prove the split. And this file is the one NT loves to clobber at the tail on F5 — anchor mid-class and re-verify before building.


6. Open-source posture


7. Release focus & phasing

✅ SUPERSEDED 2026-08-07 — THE PHASING IS HISTORY. EVERYTHING SHIPPED.

P1 released 2026-07-16. P2, P3 and P4 released together on 2026-08-07 (commit d6c1aea, 429 files) rather than as three staged phases. Every rung of the ladder is public, MPL-2.0. The only things still private are infrastructure (hosts, topology, credentials) and fitted models (Roster.conf / Model.conf — a roster is a result; the suite ships the mechanism).

Read the table below as the RISK GRADIENT it always was, not as a schedule. That gradient is still the right way to introduce the suite to a newcomer — start them at zero order risk and let them climb — and it is exactly how the public README and the landing page are ordered. What is no longer true is the claim that the later phases are unreleased.

⚠ One nuance the phase table cannot express: rung 3 (Observatory) shipped PARTIAL — the Lens is public, the consolidated surface is not finished. Both the README and the Pages ladder say Partial; keep them honest if that changes.

Because these are adoption tiers, not price tiers (§6), "focus" = what we release first and point newcomers at. The rungs collapse into 4 release phases on a risk gradient:

Phase Ships Order risk Why here
P1 · Beachheadthe focus Runtime + Skins (0) + Sensors — the 8 hero signal indicators + BarTypes (1) none beautiful, wide appeal, proves the modular runtime, zero liability
P2 · Intelligence the 5 orthogonal axes (Clock/Participation/Location/MTF/Intermarket, rung 1) + Recorder+Log (2) + Observatory (3) + Council (4) none "understand + fuse" — the axes only mean something once the Council consumes them; nothing touches an account
P3 · Execution Prop-Survival Kit (6, first) → Deck (5) → Bridge (7) → Copier (8) → Helm (9) real money safety ships before autopilot; Helm = human interdiction over any running setup; loudest disclaimers
P4 · Learning ML Lab (10) n/a capstone; needs a baked corpus anyway

P1 is the confirmed focus (2026-07-10). It carries no order-execution risk, has the widest appeal, and is the platform floor every later phase plugs into. Clean risk gradient across the four phases: none → none → real-money → advanced.

Decided (formerly open questions)

P1 Definition of Done — per bundle (bar: FULL community launch, decided 2026-07-10)

Each P1 bundle (Sentinel Skins, Sentinel Sensors) must satisfy A–E before release — contributor-ready from day one.

A · Code & compliance - Every shipped tool F5-compiles clean (NT is authoritative). - Each sensor fully naming-law compliant (via the port-sentinel-indicator skill): "Sentinel <Thing>", glass card, label remover, published …State seam. A half-plumbed sensor cannot ship. - Bundle dependency-clean — Skins references no Bus/Safety; Sensors references no L2 Safety. The downward-only rule (§4) holds at the bundle boundary, not just the file.

B · Docs - Top-level README (what Sentinel Suite is, the two-axis pitch, install). - Install guide (drop into bin\Custom → F5; NT-version prereq; we ship no NT DLLs). - Per-tool one-pager each (purpose, inputs, card readout) — or a combined Sensors reference. - Links to the Field Manual + Design System.

C · Visual showcase (the beauty beachhead — non-negotiable) - A demo workspace/template users open to see it instantly. - Screenshots / GIFs in the README, dark + light themes.

D · Legal / meta - NOTICE / AUTHORS (records contributed-Sentinel work released with permission). - Trading disclaimer (educational, not financial advice, no warranty) — even for indicators. - LICENSE (deferred placeholder until §6 is chosen).

E · Community scaffolding - CONTRIBUTING → the Platform Contract + the port-sentinel-indicator skill (how to add a compliant tool). - Issue / PR templates. - Third-party sensor compliance checklist (naming law + card + State seam). - Build verification — ⚠ not conventional CI. NT compiles ONE assembly and F5 is authoritative; headless builds false-clean and produce ghosts (see ../CONTRIBUTING.md build rules). So "CI" here = the documented headless-verify recipe + a manual F5 checklist, not an automated compile gate.


8. Next steps

  1. Boundary inventory — enumerate every Sentinel-owned file, mapped to its rung + layer. The license-agnostic input every downstream step needs. Buildable offline.
  2. Cut the two P1 bundles — from the inventory, isolate Sentinel Skins (runtime + themes) and Sentinel Sensors (runtime + bus + the 8 hero indicators + BarTypes), plus the grab-both Starter.
  3. Prototype the Core partial-class split (behind a careful F5) to prove the three-layer floor.
  4. Draft NOTICE / AUTHORS + choose the monorepo layout.
  5. License chosen — MPL-2.0 (§6). Paste the full canonical MPL-2.0 text into LICENSE before publish.

✅ P2 ASSEMBLED (2026-07-11) — the Intelligence tier, two bundles

Both LAYER on Sensors for the runtime (no re-shipped SentinelCore/SentinelSkin → no CS0101), verified Safety-free. See SENTINEL_BOUNDARY_INVENTORY.md §9 for the file lists. - Sentinel Intelligence (Rungs 1→4): 5 orthogonal axes (Clock/Participation/Location/MTF/Intermarket) + Council + SentinelNewsService. Mtf/Intermarket host SentinelTrend (⇒ needs Sensors). Eye DEFERRED (JET engine; Council consumes its seam only, ships without it). - Sentinel Observatory (Rungs 2–3): SentinelExcursionRecorder_v2_0_0 (clean-room — the private v1_4 with GodTrades21 hosting stripped; Council-only; schema 1.3 unchanged; headless-verified clean, awaits an F5) + LogEngine/LogService + Lens + Excursions. - Provenance: ⚠ the boundary doc's §6 was WRONG — v1_4 Recorder EMBEDDED GodTrades (not reference-only); fixed by the v2 clean-room. All shipped P2 files are now provenance-clean. - Open at P2: Eye clean-room · live write-validation of v2 recorder (market-open Council fires) · demo workspace + screenshots (DoD C) · the Dashboard Excursion-tab → Observatory consolidation (Dashboard is P3).


9. Relationship to other docs