Skip to content

Commit 16bde41

Browse files
alexarjeclaude
andcommitted
The notebook becomes a course, and finds the bug its zero was hiding
The 259-cell encyclopedia is now a 28-cell introduction that starts with a video in your hands and ends with sound against motion: load and look, the average image and the two grams, the QoM curve, the body, the segments, the audio, the audio-motion tempo comparison, and where to go next --- executed once, images only, 6.8 MB where 16 stood. Building it exposed a real fault: pose() caches flat 67-value rows, and both postures_from_pose() and the actions pose path consumed them as landmark arrays --- zero postures for every recording, and a hard failure for actions. pose_cache_landmarks() restores the trajectory contract with refusals marked invisible, both consumers use it, and the actions path unpacks pose_qom as what it is: a scalar QoM beside the cuttable speed envelope. The dancer truly holds two postures, an opening stillness and a held moment at 44 s, and the notebook now says so. The changelog merges this session's Fixed entry with the parallel session's Unreleased additions; that session's code stays its own. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HRX1cv8m5PFVZGjfWZUzJj
1 parent c56184b commit 16bde41

6 files changed

Lines changed: 1265 additions & 5258 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Fixed
11+
- **The pose cache reaches the higher layers in the right shape** —
12+
`pose()` caches one flat row per frame (`[time_ms, x0, y0, ...]`, zeroed
13+
below threshold), but `postures_from_pose()` and `actions_from_motion()`'s
14+
pose path consumed it as a landmark array: the postures segmenter hit its
15+
shape guard and returned zero postures for every recording, and the actions
16+
path failed outright. A new `pose_cache_landmarks()` restores the
17+
`(frames, 33, 3)` contract with visibility 0 marking the zeroed refusals,
18+
both consumers use it, and the actions path also unpacks `pose_qom`
19+
correctly (the QoM is a scalar; the cuttable series is the speed envelope)
20+
and masks refusals as NaN rather than leaps to the frame corner. Measured
21+
on the bundled dancer: two genuine postures (an opening stillness and a
22+
held moment at 44 s) and 18 actions where both previously reported nothing.
23+
1024
### Added
1125
- **ReID v2.1: chains across breaks** — `associate_fragments(embeddings=...)`
1226
now links each segment's movers into persistent chains by the same
@@ -22,6 +36,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2236
segment to a 12.7-minute chain over five segments, with 119 chains spanning
2337
breaks. Zero new decodes, as priced in the v2 design.
2438

39+
- **Events against events** — new `_events` module. `event_alignment` measures how far each
40+
event of one stream (strokes, footfalls, looks) falls from the nearest event of another
41+
(note onsets, beats, cues) against uniformly placed surrogate references, and says whether
42+
the two *attract*, *avoid* or sit at chance, with the signed lag of the nearest reference
43+
telling which came first; `event_xcorr` correlates the binned event trains. On the
44+
painter–pianist session this separated three takes no envelope correlation had.
45+
- **Cross-recurrence** — `_correlate.cross_recurrence`: recurrence rate at a fixed radius
46+
quantile, determinism, mean line length and the diagonal recurrence profile of two series,
47+
each against circular-shift surrogates, so a high determinism from two smooth series is not
48+
mistaken for coordination.
49+
- **The painting as a time series** — new `_canvas` module. `painting_content` reduces a
50+
canvas video to one hand-free median frame per second and measures painted share, monotone
51+
coverage, chromatic share, the hue histogram (drawn as a *colourgram* by `colourgram_image`),
52+
warm/cool balance, edge density, composition (`composition`: paint centre and spread,
53+
left–right symmetry, edge-orientation histogram and anisotropy) and a dominant-colour
54+
palette per minute. Bound on `MgVideo` as `painting()`.
55+
- **Head turns from the IMU** — `_pupillabs.head_turns`: yaw relative to a running median,
56+
and the spans where the head is turned away from what the wearer has been facing.
57+
2558
## [1.31.0] — 2026-09-03
2659

2760
### Added

0 commit comments

Comments
 (0)