Skip to content

Commit 70174df

Browse files
JohnCCarterclaude
andcommitted
docs(research): lock artifact-mechanics investigation PLAN (descriptive-only, no claim)
Door (i) from the campaign checkpoint: a small, low-risk plan to explain the MECHANICS behind the artifact-probe (4H reached-legs less clean; 4H snapping lowers cleanliness; snapping flips sign on 1D). Descriptive-only on frozen data — issues NO verdict, NO claim, changes no lock, resolves nothing about the crux. Feasibility: clean (deterministic from frozen data + locked detection; no new universe, no matched-null, no arbitrary frame) but NOT answerable from existing aggregates → needs a small descriptive pass recording per-leg {span_bars, magnitude_atr, snap_span_delta}. Headline descriptive object = the 4H<->1D snap_span_delta asymmetry (detector granularity vs human-anchoring precision), NOT the partly-arithmetic span<->cleanliness correlation. Pre-locked stats (single Spearman + single median split, fixed confound set) + population guard (M1 reached/unreached != Stage-2 lead) + marginal-gap caveat (surfacing CI upper -0.00095). No code/run/build here. No matched-null, no new candidate universe, no new model feature, no Genesis, no 1H, no ETH, no data-refresh, no edge/behaviour claim. Execution (Commit 2) needs a separate explicit GO. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 5c33c8b commit 70174df

2 files changed

Lines changed: 105 additions & 0 deletions

File tree

docs/research_wiki/handoff.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,17 @@ legs/ranges* (labels = facit; **no edge/behaviour/backtest/PnL/Genesis/auto-fib
152152
behaviour/Genesis/1H/ETH. [Results](reviews/btc-fib-selection-learning-artifact-results-20260624.md);
153153
summary + `cells/*.json` gitignored/regenerable. Re-run (deterministic, frozen data, no `--refresh`):
154154
`PYTHONUNBUFFERED=1 uv run --no-sync python -u -m fibengine.research.selection_learning_artifact --artifact`.
155+
- **2026-06-24 Fib SELECTION-LEARNING artifact-MECHANICS investigation — PLAN locked (docs-only),
156+
RUN PENDING separate GO.** Door (i) from the checkpoint: explain the *mechanics* behind the
157+
artifact-probe (why 4H reached-legs less clean; why 4H snapping lowers cleanliness; why snapping
158+
flips sign on 1D), **descriptive-only on frozen data — NO verdict, NO claim, no lock change**. Plan
159+
[artifact-mechanics PLAN](reviews/btc-fib-selection-learning-artifact-mechanics-plan-20260624.md):
160+
feasible cleanly (deterministic from frozen data + locked detection) but NOT answerable from existing
161+
aggregates → needs a small descriptive pass recording per-leg {span_bars, magnitude_atr,
162+
snap_span_delta}. Headline object = the **4H↔1D `snap_span_delta` asymmetry** (detector granularity
163+
vs human-anchoring precision), not the partly-arithmetic span↔cleanliness correlation. Pre-locked
164+
stats (P3) + population guard (M1 reached/unreached ≠ Stage-2 lead) + marginal-gap caveat. No
165+
matched-null/new universe/Genesis/1H/ETH/refresh. Commit 2 needs a separate GO.
155166

156167
**Next work requires a separate explicit GO. No W/gap, no Stage 1, no new sensitivity, and no Genesis
157168
may be started automatically.** Parked (test-only, separate GO): lock the facit-discipline refusal
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# BTC Fib Selection-Learning — artifact-probe MECHANICS investigation PLAN (2026-06-24)
2+
3+
**Lean Fib Research. Research-only. DESCRIPTIVE-ONLY — produces NO verdict, NO claim, no
4+
edge/behaviour/PnL/backtest/Genesis/auto-fib. Docs-only plan (no code/run authorised here).** This is
5+
the small, low-risk **investigate** plan named as door (i) in the
6+
[campaign checkpoint](btc-fib-selection-learning-checkpoint-20260624.md), to explain the *mechanics*
7+
behind the [artifact-probe result](btc-fib-selection-learning-artifact-results-20260624.md)
8+
(`1573b56`). It does **not** test the crux, change any lock, or add any positive claim. Execution
9+
needs a **separate explicit GO**.
10+
11+
## P0. Question (mechanical, descriptive — three observations to explain)
12+
13+
On the artifact-probe's existing frozen data (no refresh):
14+
15+
1. **4H — reached legs are *less* clean than unreached** (0.743 vs 0.799; gap −0.0557).
16+
2. **4H — snapping anchors to detector pivots *lowers* cleanliness** (snapped − exact = −0.0219).
17+
3. **1D — snapping *flips* to inflation** (+0.0222), opposite sign to 4H.
18+
19+
These are already locked as **"investigate, not a finding"** (artifact LOCK A7). This plan asks only
20+
**WHY, mechanically** — it issues **no verdict** and the artifact-probe's reading is unchanged.
21+
22+
## P1. Can it be tested cleanly on existing data? (feasibility — YES, with one caveat)
23+
24+
- **YES, methodically clean.** Every quantity needed is a **deterministic function of the already-frozen
25+
data + the locked detection** (`anchor_b + k=3`, frozen config) — no new candidate universe, no
26+
matched-null, no arbitrary frame, no new model feature. It is a **descriptive decomposition** of
27+
per-leg quantities the artifact-probe already computes internally.
28+
- **Caveat:** it **cannot** be answered from the *existing artifacts* (summary.json holds only
29+
aggregates — `clean_reached`, `clean_unreached`, the snap gaps). The per-leg quantities (span length,
30+
magnitude, snapped-vs-exact span) are not persisted. So execution needs a **small descriptive pass**
31+
that records them — a build+run on the **same frozen data**, low-risk, no new arbitrary choice.
32+
33+
## P2. Mechanical hypotheses (pre-stated — to keep the decomposition honest)
34+
35+
- **M1 (reached less clean = a size/length confound):** the detector reconstructs **larger / longer**
36+
swings (it needs fractal structure + `min_prominence_atr=0.5`); longer swings carry more intermediate
37+
retracement → lower `cleanliness`. Unreached legs (detector misses) are shorter/smaller → straighter →
38+
higher `cleanliness`. Prediction: reached legs have **longer span / larger magnitude**, and the
39+
(**marginal** — surfacing CI upper was −0.00095) cleanliness gap **attenuates** when conditioning on
40+
span. *M1 explains a marginal gap; the note must not retroactively harden the surfacing result.*
41+
- **M2 (4H snapping lowers cleanliness):** detector pivots sit at the **fuller** swing extremes; the
42+
human anchors **inside** them, so snapping **extends** the bar-index span and `cleanliness = net/path`
43+
drops. **Important — the bare correlation `snap_span_delta ~ (snapped − exact)` is partly arithmetic
44+
by construction (changing the span changes net/path mechanically), so it is NOT the descriptive
45+
object.** The genuinely informative, non-trivial fact is **M3's cross-TF asymmetry** below.
46+
- **M3 (the real descriptive object — cross-TF asymmetry in `snap_span_delta`):** on **4H** detector
47+
pivots systematically sit **outside** the human anchors (`snap_span_delta > 0`, extension lands in
48+
retracement → cleanliness down); on **1D** they do **not** (`snap_span_delta ≤ 0` → cleanliness up).
49+
That asymmetry — **detector granularity vs human-anchoring precision differing by TF** — is the real
50+
content explaining the sign flip, reported as the headline, **not** "span extension lowers
51+
cleanliness" dressed as a discovery.
52+
53+
## P3. Pre-locked statistics (anti-forking-paths — fixed BEFORE any number)
54+
55+
- **Per-leg quantities (descriptive):** `span_bars = |pos_b − pos_a|`, `magnitude_atr` (net move ÷
56+
causal ATR at `anchor_b`), `snap_span_delta` (bars), all on the frozen data / locked detection.
57+
- **Reported as:** distributions (median + IQR) for reached vs unreached (M1); a **single Spearman
58+
correlation** `cleanliness ~ span_bars` and a **single median split** on `span_bars` (M1 attenuation);
59+
and — the headline — the **per-TF sign + distribution of `snap_span_delta`** to expose the 4H↔1D
60+
**asymmetry** (M3). The bare `snap_span_delta ~ (snapped − exact)` correlation may be shown for
61+
completeness but is flagged **partly arithmetic, not the finding**. **Fixed confound set =
62+
{span_bars, magnitude_atr}** — no tuned bins, no cherry-picked controls.
63+
- **NO bootstrap verdict, NO CI-based decision, NO new locked verdict** — purely descriptive. The output
64+
is a **mechanics note**, not a result with a verdict.
65+
66+
## P4. Discipline / non-claims (binding)
67+
68+
- **Descriptive-only.** Issues **no verdict**, adds **no positive claim**, and does **not** change the
69+
artifact-probe reading (still "investigate, not a finding") or any lock.
70+
- Does **not** resolve the cleanliness crux (stays OPEN); a clean mechanical explanation of the gap is
71+
**not** evidence either for or against "genuine human signal."
72+
- **Population guard (binding):** M1's reached-vs-unreached contrast is detector-**reached** vs
73+
detector-**missed** human legs — a **different population** from the Stage-2 cleanliness lead
74+
(human-matched vs non-human candidates, both *inside* the detector universe). "Span explains the
75+
reached/unreached gap" must **NOT** bleed into "span explains/dissolves the Stage-2 lead" — different
76+
populations, different (un-made) claim.
77+
- **No matched-null, no new candidate universe, no new model feature, no Genesis, no auto-fib-as-truth,
78+
no 1H, no ETH, no label/corpus mutation, no `data.fetch --refresh`** (frozen-data parity).
79+
80+
## P5. Execution sketch (Commit 2 — NOT executed here; needs a separate GO)
81+
82+
- A small **descriptive pass** recording per-leg `{span_bars, magnitude_atr, snap_span_delta}` +
83+
the P3 summaries — either a `--artifact-mechanics` descriptive mode on
84+
`selection_learning_artifact.py` or a tiny sibling; **no code into byte-capped
85+
`selection_learning.py`**. Reuses the existing rows / detection / ε / frozen data.
86+
- Tests for the new descriptive quantities; a **mechanics note**
87+
(`btc-fib-selection-learning-artifact-mechanics-20260624.md`, descriptive, no verdict). Artifacts
88+
under `experiments/review/fib_selection_learning/artifact/` (**gitignored**).
89+
90+
## P6. What this plan does NOT do
91+
92+
No code, no run, no build, no verdict, no claim, no lock change, no matched-null, no new universe, no
93+
push beyond this plan doc. Execution requires a **separate explicit GO**; **halt and report** if, at
94+
build time, any pre-locked statistic (P3) or the descriptive-only discipline (P4) is found unclear.

0 commit comments

Comments
 (0)