TASK: Flip the trail-distance default 1.0 → 0.40, activation UNCHANGED at
      1.0, through the three-artifact config lockstep. One value, chosen from
      the 2026-09-07 profit-capture grid. Reversible in one line.

## Established context

- task_profit_capture_trail (2026-09-07) shipped trailing_stop.v4 with
  threshold.trail_activation_mult and threshold.trail_distance_mult, both
  defaulted 1.0/1.0 (byte-identical to v3), plus the trail-grid harness.
- The grid re-priced 26 recorded positions at stop-level AND tick-mark
  fills. Recommended cell: activation 1.0 (UNCHANGED), trail 1.0 → 0.40.
  Net over corpus: stop_level −141 → +1306; tick_mark −727 → +462 —
  positive in BOTH fill arms. Capture efficiency 32% → 70% on the 13
  trailed positions; same 13 (activation unchanged), so one variable moves.
  Deliberately NOT the grid max (0.75/0.40=+1719) — that moves two
  variables and neighbours a cliff. L2, n=26; re-confirm at ~50.
- V2 config is not loaded from a DB (Config.load reads schema.py DEFAULTS);
  the value lives in three lockstep artifacts the v2-config-schema-sync gate
  compares, spec authoritative — same path the atr_derived flip used.

## Verify the premises

1. The current default of threshold.trail_distance_mult is 1.0 in all three
   artifacts (Spec 05 §DB config keys, schema.py DEFAULTS, seed SQL) and the
   sync gate parses the spec's value from the key line's comment. Confirm the
   new comment parses to 0.40 before CI.
2. trailing_stop.v4 reads threshold.trail_distance_mult through resolved.py
   at boot (not a cached constant) so the new default takes effect on
   restart; _validate_trail_multiples still passes at 1.0/0.40 (0.40 inside
   the declared range, activation still 1.0).
3. Any test that pins the trail_distance default = 1.0 (grep) — update it
   with this change; do not weaken a test that asserts BEHAVIOUR at a given
   pair (those stay; only the default-value assertions move).
4. The boot cfg- checksum changes — record old and new (Nitin's restart
   verification token).

## Do NOT change

threshold.trail_activation_mult (stays 1.0 — the grid is non-monotone in
activation; lowering it is worse everywhere) · trailing_stop.v4 logic ·
break_even / partial / target / any other policy · the stop model · the
grid harness · any behaviour at a given pair — only the DEFAULT value of
one key.

## Implementation

1. Spec 05: dated amendment (2026-09-07) — the grid evidence, the chosen
   cell, both-arms-positive robustness, the one-variable rationale, the
   L2/n=26 caveat and the re-confirm-at-50 note. Update the §DB config keys
   comment line for threshold.trail_distance_mult to 0.40.
2. schema.py DEFAULTS + seed SQL: 1.0 → 0.40, lockstep.
3. Nothing else. Activation stays 1.0.

## Tests

- Config sync gate green (three artifacts agree at 0.40).
- Boot passes _validate_trail_multiples at 1.0/0.40.
- Default-pinning tests updated; behaviour-at-pair tests unchanged.
- A fixture position that peaked ~2R and gave back under the old 1.0 trail
  now retains more under 0.40 (the mechanism, proven live-config).
Then the FULL suite:

    bash backend/scripts/ci/run_all.sh

All 13 gates green.

## Verification report

A. Three-file diff  B. Sync-gate parse proof (spec reads 0.40)  C. Default-
pinning tests updated  D. Old vs new cfg- checksum  E. 13 gates  F.
Premises that did not match  G. Unknowns

CRITICAL: One value. Activation must remain 1.0. To revert: set the default
back to 1.0 and restart — instant, no data migration. If any premise shows
the value is read from somewhere other than the three artifacts, STOP and
report — the flip must not miss a copy.
