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.
production components
5 of 11 shown, newest firstRun 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
- INTERNAL — First-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.
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
- INTERNAL — Derived 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 partition → BOTH 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.
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
- INTERNAL — First-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 execution → RETAINED 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.
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
- INTERNAL — First-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 engine → BOTH 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.
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
- INTERNAL — First-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. identify overlap
- 2. run parity / behaviour comparison
- 3. test scientific and operational assumptions
- 4. confirm no required use case is lost
- 5. migrate dependents
- 6. archive old implementation
- 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