Task metadata
| Field |
Value |
| Task ID |
E11 |
| Category |
Evaluation |
| Priority |
Medium |
| Complexity |
Low |
| Est. days |
2 |
| Replaces |
#12 (closed — written against ECG-FM, which never produced a reported number) |
| Feeds |
#63 (M10) |
Features / method
Resolve the pooling decision on both modalities before the canonical retrain locks it in.
Description
The closed version of this task asked about ECG-FM pooling. That framing is stale twice over: ECG-FM never produced a reported number, and the ablation was scoped to feed M08/M09, which #63 now supersedes.
Two pooling decisions are actually open, and the echo one is probably the more consequential:
ECG side. TECHNICAL.md 4.2 leaves mean vs attentive pooling unresolved for the 768-d HuBERT-ECG embeddings.
Echo side. docs/echo_hubert_loader.md records that clip-level EchoJEPA embeddings were mean-pooled to one vector per echo study (525K clips down to 7,251 study rows). TECHNICAL.md 4.1 says EchoJEPA embeddings preserve spatial structure across frames and that a plain linear probe is therefore insufficient — an attentive probe is required. Mean-pooling clips into a single vector before the probe ever sees them may be discarding exactly the structure that motivates the attentive probe. If so, it caps echo-branch performance regardless of probe architecture, which is directly relevant to the baseline gap in #67.
Steps:
- ECG: train the ECG-only probe with mean and with attentive pooling; compare on val.
- Echo: compare study-level mean-pooled embeddings against retaining clip-level tokens into the attentive probe.
n_echo_clips is already in the manifest metadata, so the clip counts per study are known.
- Pick winners on val only. Do not touch test.
- Log both decisions to
logs/pooling_ablation.json with the val numbers behind them.
Acceptance criteria:
Task metadata
E11Features / method
Resolve the pooling decision on both modalities before the canonical retrain locks it in.
Description
The closed version of this task asked about ECG-FM pooling. That framing is stale twice over: ECG-FM never produced a reported number, and the ablation was scoped to feed M08/M09, which #63 now supersedes.
Two pooling decisions are actually open, and the echo one is probably the more consequential:
ECG side. TECHNICAL.md 4.2 leaves mean vs attentive pooling unresolved for the 768-d HuBERT-ECG embeddings.
Echo side.
docs/echo_hubert_loader.mdrecords that clip-level EchoJEPA embeddings were mean-pooled to one vector per echo study (525K clips down to 7,251 study rows). TECHNICAL.md 4.1 says EchoJEPA embeddings preserve spatial structure across frames and that a plain linear probe is therefore insufficient — an attentive probe is required. Mean-pooling clips into a single vector before the probe ever sees them may be discarding exactly the structure that motivates the attentive probe. If so, it caps echo-branch performance regardless of probe architecture, which is directly relevant to the baseline gap in #67.Steps:
n_echo_clipsis already in the manifest metadata, so the clip counts per study are known.logs/pooling_ablation.jsonwith the val numbers behind them.Acceptance criteria: