# Lane J — Ribbons & follow-a-friend (M21, M22) You make tracks visible and rideable. Pure frontend — ONE file: `frontend/src/friendTracks.js`. Spec: `30-phase6.md` M21/M22 + contract #2. Branch `lane/j-ribbons`, own worktree. ## What foundation3 gives you - Your stub module imported from main.js with `init()` + per-frame `update(tGlobal)` already called; hidden `#btn-friends` + `#friends-panel` in index.html; `state.tracks` loaded at boot when `manifest.has_tracks`. - Read-only building blocks you may CALL but never edit: `scene3d.addObject/removeObject`, `registerHelper` (photo mode hides you for free), `enterPathMode`/`exitPathMode`/ `applyCameraPose` (the camPath.js pattern — read that file first), `focusOn`; `PATCH/DELETE /api/tracks/{id}`. anchorPanel.js is your UX/style reference (inject your own