Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
0c1e325
Initial plan
Copilot Jul 20, 2026
1b58646
Add drops-per-specimen variance + sample-size + timing analysis (@me-…
Copilot Jul 20, 2026
12305b7
Add 60 in / 5 felt validation analysis (7xadt6 + 9GMQYQ, PR #86)
github-actions[bot] Jul 21, 2026
9110893
Confirm single felt stack across both 60in/5felt campaigns (@ctrhjk)
github-actions[bot] Jul 21, 2026
3e092db
Fold 60in-5felts + 5vs10 datasets into sample-size analysis (@me-madsen)
github-actions[bot] Jul 21, 2026
c2dd07f
Add slo-mo video record + frame analysis for 60in/5felts campaigns
github-actions[bot] Jul 21, 2026
56d076a
Add files via upload
sgbaird Jul 21, 2026
4c082cf
Organize slo-mo videos + full frame-by-frame kinematics (60in/5felts)
github-actions[bot] Jul 21, 2026
ce8f000
Create .gitignore
me-madsen Jul 21, 2026
6a8e795
Add files via upload
me-madsen Jul 21, 2026
3097842
Add files via upload
me-madsen Jul 21, 2026
83d34d5
Analyze prc1kn 60 in campaign + mock three-structure transmissibility…
github-actions[bot] Jul 21, 2026
011c8e1
Analyze prc1kn slo-mo videos: kinematics, grid parallax, 3-structure …
github-actions[bot] Jul 21, 2026
4c7c3d7
Fold in confirmation: every "5 felt" stack was 4 felt + 1 cardboard
github-actions[bot] Jul 22, 2026
5dd76e6
Survey durable absorber alternatives to the felt stack
github-actions[bot] Jul 22, 2026
d5caa97
Add release-hook sticking troubleshooting note
github-actions[bot] Jul 22, 2026
5d392f5
Create .gitignore
ctrhjk Jul 22, 2026
fdbf6bc
Add files via upload
ctrhjk Jul 22, 2026
32b009f
Add files via upload
ctrhjk Jul 22, 2026
590af15
Create .gitignore
me-madsen Jul 28, 2026
369b2bd
Add files via upload
me-madsen Jul 28, 2026
49a8788
Add files via upload
me-madsen Jul 28, 2026
ee23840
Add files via upload
me-madsen Jul 28, 2026
cfbf518
Add files via upload
me-madsen Jul 28, 2026
63e663f
Create .gitignore
me-madsen Jul 28, 2026
bd5fc0c
Add files via upload
me-madsen Jul 28, 2026
dab3bc9
Add files via upload
me-madsen Jul 28, 2026
1a31c0f
Add files via upload
me-madsen Jul 28, 2026
13c6f9b
Add files via upload
me-madsen Jul 28, 2026
1187ad4
Create .gitignore
me-madsen Jul 28, 2026
2df25f3
Add files via upload
me-madsen Jul 28, 2026
7027500
Add files via upload
me-madsen Jul 28, 2026
5d50f7d
Add files via upload
me-madsen Jul 28, 2026
23ba652
Add files via upload
me-madsen Jul 28, 2026
9642ffb
Create .gitignore
me-madsen Jul 28, 2026
577024f
Add files via upload
me-madsen Jul 28, 2026
b0b1814
Add files via upload
me-madsen Jul 28, 2026
cb06f29
Add files via upload
me-madsen Jul 28, 2026
62f3852
Add files via upload
me-madsen Jul 28, 2026
dc51512
Analyze 7-22 - 7-27 second-batch 60 in campaigns vs batch 1
github-actions[bot] Jul 28, 2026
d8ebf0d
Add CH5-only absorber-stack compaction analysis (704 drops, 07-20 -> …
github-actions[bot] Jul 29, 2026
be239bf
Create .gitignore
me-madsen Jul 30, 2026
6f84aaf
Add files via upload
me-madsen Jul 30, 2026
08cd5fd
Add files via upload
me-madsen Jul 30, 2026
1714ff6
Add files via upload
me-madsen Jul 30, 2026
82be67a
Add files via upload
me-madsen Jul 30, 2026
eadcf1f
Add files via upload
me-madsen Jul 30, 2026
b980f72
Create .gitignore
me-madsen Jul 30, 2026
f73ce48
Add files via upload
me-madsen Jul 30, 2026
79aa03c
Add files via upload
me-madsen Jul 30, 2026
ff60c09
Add polyurethane vs felt+cardboard paired absorber A/B analysis (bpx68c)
github-actions[bot] Jul 30, 2026
5a1c1b7
Add polyurethane arrangement sweep and print-defect study analyses
github-actions[bot] Jul 30, 2026
902fa0e
Re-derive the PU arrangement pick without the felt-continuity criterion
github-actions[bot] Jul 31, 2026
b43fb02
Submit PU-config analysis to Edison for adversarial review
claude[bot] Jul 31, 2026
b6a296e
Edison adversarial review overturns the PU arrangement recommendation
claude[bot] Jul 31, 2026
ccdeef4
Pre-register the blind A/B arrangement classification rule
github-actions[bot] Aug 3, 2026
c4bec85
Amend the blind A/B pre-registration for the revised design
claude[bot] Aug 3, 2026
a9b3e13
Note that discrimination is testable only if specimen is crossed with…
claude[bot] Aug 3, 2026
06d69c8
Pre-register C/D indecidability for the 80-drop four-arrangement variant
github-actions[bot] Aug 3, 2026
95b7b07
Analyze the blind ABC x 123 crossover: key, discrimination, ringdown
github-actions[bot] Aug 6, 2026
b309ed8
Record the blind-test outcome: 18/18 correct, 60 in confirmed, pin-br…
github-actions[bot] Aug 6, 2026
c75d062
Analyze the guide-rod cleaning/greasing A/B: +5.4 % impact-velocity s…
github-actions[bot] Aug 10, 2026
98a4196
Analyze the Drop Speed Decay 2/3 campaigns: no velocity decay over 10…
github-actions[bot] Aug 12, 2026
bf274dd
Verify the re-entered TP4 settings: sensitivities correct to <=1 % wh…
github-actions[bot] Aug 19, 2026
8703400
Add the reusable SOBOL+S0 campaign batch pipeline ahead of the data u…
github-actions[bot] Aug 19, 2026
80d42b1
Analyze the first SOBOL+S0 campaign batch (8/9 specimens, 942 drops):…
github-actions[bot] Aug 21, 2026
642b8c0
Explain the SOBOL batch printed-mass spread: the Route-A constant-mas…
github-actions[bot] Aug 21, 2026
24ad9b6
Check in the first r2d2c1/r2d2c2 sessions (21 drops each, 08-24): fif…
github-actions[bot] Aug 24, 2026
342e659
Answer the T-drift question: place r2d2c2's +3.5 % step against all 1…
github-actions[bot] Aug 24, 2026
595e6b4
Add the standing T-drift watch: auto-flag any session outside the his…
github-actions[bot] Aug 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,6 @@ Thumbs.db

# Edison upload bundles (regenerated by submit scripts)
edison-trajectories/*/bundle/

__pycache__/
*.pyc
41 changes: 41 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Repo instructions for Claude

## Drop-test analysis: standing conventions

### T-drift watch (standing instruction, PR #86 · 2026-08-24)

In **every** drop-test analysis — in this PR or any other — screen each
session's within-session transmissibility series (T = TOP/CH5, CFC-180,
stabilized drops) for drift, report the numbers, and **notify prominently**
if a session breaks the historical envelope. Requested by @me-madsen after
the `r2d2c2` event; the round-2 batch is analyzed in a separate PR, so this
must not be forgotten between threads.

- Historical 1/2 in PU mat envelope (17 sessions, ~1,300 stabilized drops,
08-10 → 08-24): |OLS slope| ≤ 0.051 %/drop, |first-5 vs last-5| ≤ 2.2 %.
Per-session table: `data/drop-tests/r2d2-checkin/figures/t_drift_history.json`;
figure: `.../figures/04_t_drift_history.png`.
- Flag thresholds: |slope| > 0.06 %/drop (slope_p < 0.01) or |end-to-end| > 2.5 %.
- Reference event: `r2d2c2` (08-24) stepped +3.5 % (1.023 → ~1.059 plateau,
from ~drop 7, plateaued ~drop 14). Output-side — top-vertex peak rose while
the CH5 input fell — lead suspect wax/mount coupling re-seat. `r2d2c1`,
minutes earlier on the same mat, was dead flat.
- When flagged: the session's T mean is drift-contaminated. Do not hand it to
the BO — use a plateau-only average or ask for a mount re-seat + re-run.
Attribute the drift (output-side = mount; common-mode = rig/mat, cancels in T).
- The campaign pipeline (`scripts/analysis/drop_test_campaign_analysis.py`,
`t_drift_watch()`) automates this: `t_drift_watch` block in
`campaign_metrics.json`, `t_drift_flag`/slope/e2e columns in
`campaign_summary.csv`, console warnings. Reuse it (or its convention) in
any new analysis script, and state the watch outcome — flagged or clean —
in every findings writeup.

### Other conventions (pointers, not duplicates)

- Per-capture pipeline + capture settings: `analyze_capture` in
`scripts/analysis/drop_test_abc123_blind_analysis.py`; use the **tail
baseline** for sessions from 08-17 on (mat contact precedes the 2 ms
pre-trigger window).
- Δv rig-health bars, warm-up discard, and dataset index:
`docs/drop-test-speed-decay-analysis.md`, `data/drop-tests/README.md`.
- T3 specimen IDs are case-insensitive; treat as lowercase.
59 changes: 59 additions & 0 deletions data/drop-tests/60in-5felts-validation/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# 60 in / 5 felt validation — derived analysis outputs

Derived dataset (no raw data of its own) for the validation campaigns of the
felt-sheet sweep's recommended operating point (**60 in drop height + 5 felt
sheets**), posted by @ctrhjk on PR #86:

| specimen | raw data | captures | session |
|---|---|--:|---|
| `7xadt6` | [`../7xadt6 _60in_5felts folder/`](../7xadt6%20_60in_5felts%20folder/) — `Marcus_{1..4}.zip` | 100 | "7xadt6 60in+5felts", 2026-07-20 19:51–20:59 |
| `9GMQYQ` | [`../9GMQYQ_60in_5felts/`](../9GMQYQ_60in_5felts/) — `jin_{1..4}.zip` | 101 | "9GMQYQ 60in+5felts", 2026-07-20 21:12–22:32 |

The raw TP4 exports (200 ms / 125 kHz) stay inside the committed zips; the
analysis script reads them directly.

**Stack composition:** per @me-madsen (PR #86), every "5 felt" session —
these two included — physically used **4 felt sheets + 1 cardboard** (the
lab owns only four felt sheets). Composition was constant across sessions,
so the analysis conclusions are unaffected; the names keep the label the
data was posted under.

## Setup / channel map

Rig unchanged from the felt-sheet sweep and `500drops-nobot` runs; bottom
tri-axis removed. Per @ctrhjk's channel note on PR #86:

| channel | station | full scale |
|---|---|--:|
| CH2 | top-vertex key-seat tri-axis, **X** ("TOP" output) | 14,492.8 G |
| CH3 | top-vertex key-seat tri-axis, **Y** | 14,992.5 G |
| CH4 | top-vertex key-seat tri-axis, **Z** | 13,624.0 G |
| CH5 | base-plate single-axis (input, **trigger @ 300 G**) | 9,442.9 G |

## Analysis

Script: `scripts/analysis/drop_test_60in_5felts_analysis.py` (emits
`figures/60in_5felts_metrics.json`). Writeup:
[`docs/drop-test-60in-5felts-analysis.md`](../../../docs/drop-test-60in-5felts-analysis.md)
— capture health (201/201 clean), the burn-in scan + stabilized-phase OLS
drift regressions, the felt-wear saturation story (CH5 raw spike 2.1 →
6.5 kG over the evening), specimen discrimination, and the keep-60-in/5-felt
+ manage-felt-as-consumable recommendation.

| figure | content |
|---|---|
| `figures/01_full_series.png` | per-capture raw CH5 / TOP peaks + FS/3 line, both specimens |
| `figures/02_stabilized_ols.png` | stabilized-phase OLS fits: TOP and T = TOP/CH5 per specimen |
| `figures/03_saturation.png` | CH5 / CH4 raw peak as % of full scale across the evening |
| `figures/04_specimen_comparison.png` | stabilized TOP and T boxplots, Welch p, Cohen's d |

## Slow-mo video

[`video/`](video/) — @ctrhjk's slow-motion videos of both campaigns
(Sony RX100 IV @ 960 fps, 2026-07-20; committed as
`{7xadt6,9GMQYQ}_slomo.mp4` by @sgbaird) plus the full frame-by-frame
kinematics pass (`drop_test_60in_5felts_video_analysis.py`): pulse ≤ 2
capture frames ≈ 1–2 ms (corroborates the DAQ's ~1.6 ms), anti-rebound
brake catch ~86–89 ms after impact (no secondary hits), top-vertex
snap-back ~0.7× impact speed, specimens intact throughout. Writeup: §7 of
the analysis doc.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading