New Additions

New Additions

A permanent record of every capability added to TradeRep: where it came from, its licence position, why it was added, how it was tested, what existing functionality it overlaps, and what a rollback would involve. Nothing is deleted from this ledger — a retired component keeps its entry, with the reason and the parity evidence behind any replacement.

DashboardBot TesterResearch History (dated research events)

Entries
11
experimental
6
certified
0
production
5
retired
0
4 entries declare a TradeRep location that is not in this checkout (component-deterministic-replay-invariants, component-independent-replication-manifest, component-market-intelligence-causality-guards, strategy-factory). For components owned by another research lane that is expected until their branch merges — it is surfaced rather than hidden so a stale claim cannot go unnoticed.

production components

5 of 11 shown, newest first
Strategy Factory (declarative DSL, certification, funnel runner)productionResearch infrastructure2026-09-16location not in this checkout

Run large pre-registered candidate campaigns (A6+) through a certified declarative engine with per-candidate execution certification, integrity auditing and multiple-testing accounting.

Source
Internal
Original implementation / inspiration
docs/STRATEGY_FACTORY_ARCHITECTURE.md
TradeRep location
lib/strategy-engine/research/strategyFactory/ — missing here: lib/strategy-engine/research/strategyFactory/
Licence / reuse constraints
INTERNALFirst-party code.
Tests performed
  • · factory suite under tests/unit/strategy-engine/research/strategyFactory/ (owned by the multi-market lane)
Overlaps with existing functionality
  • Strategy Lab campaign runner (lib/strategy-engine/research/strategyLab/campaign/)BOTH RETAINED — the Strategy Lab carries hand-written A0-A5 strategies through its gates; the Factory carries machine-generated declarative candidates. The Strategy Registry indexes both and labels which engine produced each record.

Rollback: Campaign artifacts are frozen on disk and remain readable even if the runner is removed; the registry reads the artifacts, not the runner.

Sealed pre-Discovery Holdout bankproductionResearch governance / data2026-09-15

Provide strictly-before-Discovery data that no pre-Holdout gate can see, handed out one chronological slice at a time.

Source
Internal
Original implementation / inspiration
research-output/strategy-lab/sealed-holdout-bank/
TradeRep location
research-output/strategy-lab/sealed-holdout-bank/, lib/strategy-engine/research/strategyLab/campaign/holdoutGate.ts
Licence / reuse constraints
INTERNALDerived market data, not third-party code.
Tests performed
  • · tests/unit/registry/holdoutPolicy.test.ts (surface honesty)
  • · campaign-runner gate tests under tests/unit/strategy-engine/
Overlaps with existing functionality
  • per-campaign forward Holdout partitionBOTH RETAINED — the sealed bank is pre-Discovery data; the forward partition withholds post-boundary bars inside a campaign. They answer different questions.

Rollback: Not rollbackable in any meaningful sense: consumed slices are permanently spent. This entry exists so that fact stays visible.

Durable backtest worker (GitHub Actions dispatch + checkpointed jobs)productionBacktest infrastructure2026-09-14

Long historical replays exceeded the serverless request ceiling; the durable worker runs the same runBacktestJob on a GitHub-hosted runner with cooperative cancellation, TTL advisory locks and bounded re-dispatch.

Source
Internal
Original implementation / inspiration
lib/backtest/jobs/* + .github/workflows/backtest-job-worker.yml
TradeRep location
lib/backtest/jobs/dispatch.ts, lib/backtest/jobs/runBacktestJob.ts, lib/backtest/jobs/recovery.ts
Licence / reuse constraints
INTERNALFirst-party code.
Tests performed
  • · tests/unit/backtest/jobRecovery.test.ts
  • · tests/unit/backtest/runBacktestJobCancellation.test.ts
  • · tests/unit/backtest/progressPersistence.test.ts
Overlaps with existing functionality
  • in-process backtest executionRETAINED as the fallback when no worker token is configured (local dev); identical compute path.

Rollback: Unsetting BACKTEST_WORKER_GITHUB_TOKEN/BACKTEST_WORKER_REPO falls back to in-process execution with no code change.

Prospective live-shadow runners (F6, F2 Arm C, A2.10) and PB Elite outcome trackerproductionLive shadow / forward validation2026-09-14

Collect genuinely prospective evidence on frozen specifications, with no order execution.

Source
Internal
Original implementation / inspiration
lib/strategy-engine/research/{family6Shadow,family2ArmCShadow,a2Dot10Shadow,pbEliteOutcome}/
TradeRep location
wired into lib/live/webhookProcessor.ts; read back via /api/live/f6-tally and /api/live/a2dot10-tally
Licence / reuse constraints
INTERNALFirst-party code.
Tests performed
  • · tests/phase4/07_a2dot10_shadow.test.ts
  • · tests/integration/webhookProcessor.test.ts
  • · tests/unit/live/strategyRosterArming.test.ts
Overlaps with existing functionality
  • backtest engineBOTH RETAINED — a shadow runner cannot observe history it did not live through; the backtest engine cannot produce prospective evidence.

Rollback: Each runner is standalone and additive; removing one stops its observation writes and affects no other runner or V1.

Architecture V2 live shadow classifier (tiered quality + PDH veto)productionCandidate architecture / shadow classification2026-09-13

Classify live decisions in shadow against the approved candidate architecture without changing V1 behaviour, sizing or risk.

Source
Internal
Original implementation / inspiration
docs/CANDIDATE_ARCHITECTURE_V2.md
TradeRep location
lib/strategy-engine/research/architectureV2/
Licence / reuse constraints
INTERNALFirst-party code.
Tests performed
  • · tests/unit/architectureV2/decisionIntegrity.test.ts
  • · tests/integration/architectureV2LiveShadowIntegration.test.ts
Overlaps with existing functionality
  • AV2 challenger program (research-output/av2-planning/)DISTINCT PROGRAMS — Architecture V2 is a candidate architecture for V1 setups; AV2 is challenger testing against the F6/A2.10 champions. Kept separate in every surface to prevent misreporting either.

Rollback: Shadow-only and non-executing; disabling the classifier stops classification writes only.

Replacement process

An independent second engine is valuable BECAUSE it is independent
  1. 1. identify overlap
  2. 2. run parity / behaviour comparison
  3. 3. test scientific and operational assumptions
  4. 4. confirm no required use case is lost
  5. 5. migrate dependents
  6. 6. archive old implementation
  7. 7. only then remove dead code if safe

A stronger second engine is used to replicate finalists, not to automatically replace the canonical one: if both engines agree, confidence rises. Replacement is a separate engineering decision with its own parity migration.

Read from research-output/registry/new-additions.json · research-output/registry/README.md