Ran rule-of-5-universal; fixed all findings: monorepo-safe git
toplevel resolution, mode-change baseline bootstrapping, I/O error
surfacing, shell.to_string() cleanup
All changes pushed to remote
Arc: 6 ready issues → 0; full tdd-ro5 cycle with
quality review
Next:dont-kxg (dt alias) and
dont-w36 (ephemeral sessions) are now unblocked
Tasks created
Decisions
Session 17:31 (miblioteca)
Ran issue-review on 8 GhostMotionPipeline
extraction issues; collapsed 4 tiny Phase 0 issues into
mibilioteca-e2s, added E2E acceptance issue
mibilioteca-898, fixed stale test count on
mibilioteca-0d3
mibilioteca-e2s (TDD): removed double gyro integration
in motionHandler, fixed scanAxis hard-coded
'y', consolidated focalLengthPx to
ghostOverlay.ts, added clampYawToViewport to
onGyroReading
mibilioteca-i77: created
GhostMotionPipeline class; fixed no-gyro guard to prevent
zero-shift frame spam pre-snapshot
Wired GhostOverlayCanvas and
GhostCalibrationPage to GhostMotionPipeline
(mibilioteca-0d3, mibilioteca-d1w); removed
focalLengthPx re-export from page
Fixed /ghost rectangle not moving:
ghost/main.ts was passing no deps →
gyro: null; fixed to mirror App.ts sensor
detection
Removed translation double-integration from
GhostOverlayCanvas (accel drift produced 400px+ vertical
shift in 30s; now pure-rotation)
Fixed motion gate reset bug:
yawIntegral/pitchIntegral were zeroed on gate
close; integrals now accumulate across gate cycles