Engineering note · Repair acceptance
Scope a Trading Bot Repair Without Changing the Strategy
“Fix the EA” is too broad to accept. A useful repair brief names one failed behavior, the existing behavior that must remain and the changes excluded from the delivery. That boundary protects the buyer from a working patch that quietly becomes a different strategy.
- 01Identify the failed case
- 02Freeze the baseline
- 03Protect an unaffected case
- 04Exclude a new feature
Restoring a rule is different from choosing a new one
A missing entry might violate a written rule. It might also reflect a session filter whose intended behavior was never agreed. The first is a defect against a baseline. The second is a rule decision. Keep unresolved decisions visible rather than letting a developer choose the most convenient chart outcome.
Write the current source revision, platform version, inputs and shortest reproduction. Add one expected decision with a timestamp and the observed decision. If authorized source is missing, the task is not a normal source repair; a separate rebuild needs its own specification.
Use three columns: fix, preserve and exclude
Fix describes the one difference the patch must make. Preserve names the rules it must not change, such as bar timing, position sizing, valid no-trade filters and existing exits. Exclude names tempting additions such as a new indicator, dashboard or parameter search.
For example, a repair may restore one permitted closed-bar entry while preserving a blocked out-of-session entry. Adding a new intrabar mode is excluded. Those are hypothetical acceptance decisions, not measured results from a delivered EA.
Keep exclusions observable. “No strategy changes” is hard to review if the handoff contains only a compiled file. Retain the original and changed source, a concise change list, the inputs and the test evidence for the agreed cases.
Acceptance needs a negative control
The original failed case checks that the intended difference exists. An unaffected case checks that protected behavior still exists. An excluded-feature case checks that the delivery did not expand beyond the agreed task. Record actual outcomes for each case instead of calling the whole EA fixed after one screenshot.
Passing those cases proves only the named software boundary in the tested environment. It does not certify every broker, every market condition or future trading performance. Keep a newly found unrelated defect separate from the accepted repair and quote another scope only when needed.
Three acceptance checks
Proposed tests, not executed customer results. Record actual outcomes separately.
Original failure
Input: Repeat the frozen incident with the original inputs and the reviewed patch.
Expected: The named behavior changes to the agreed decision, with a retained trace and source revision.
Protected behavior
Input: Repeat an unaffected no-trade case covered by an existing gate.
Expected: The gate still prevents a request and records the same reason.
Excluded feature
Input: Inspect an explicitly excluded mode or feature and the source change list.
Expected: The patch does not add or enable it. A requested new rule remains a separate decision.
Sources and related guides
Start with your own rules
Use the free Rule Check to write the expected behavior and one protected no-trade case. It is a requirements check, not a claim that the EA works.
Define your repair boundary →