Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
T
Tidal
  • Overview
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • PLN
  • Tidal
  • Repository

Switch branch/tag
  • Tidal
  • live
  • midi
  • nova
  • nujazz
  • infusion_basse.tidal
Find file
BlameHistoryPermalink
  • PLN (Algolia)'s avatar
    fix(surface): finish the #94 column remap — 169 files still spoke the pre-gMask layout · b5ad8b6c
    PLN: "so many tracks still having ^42 instead of ^41 for kicks its confusing."
    
    Remap phase 2 (5910aacc) column-aligned the board so column N IS orbit N, but it
    was scoped to the FOURTEEN files of the OPAL set. Everything else still spoke
    the layout from when gMask held CC 41, where an orbit's gate row started one
    column late: d1 -> ^42, d2 -> ^43. button-column-audit found 169 such files,
    every one of them shift +1 — a single layout generation, not a scatter of typos.
    
    Layout-shifted files: 169 -> 0. Buttons on their own column: 35.7% -> 78.6%.
    
    TWO SYSTEMIC FIXES IN migrate-columns.py, both found by running it on the whole
    corpus instead of a setlist. Each refused a batch rather than writing bad
    Haskell, which is the only reason they were cheap to find:
    
    1. THE SEGMENT BOUNDARY WAS DEPTH-BLIND. A chain step ends at the next line
       starting with `$`/`#`, but a `$` inside an open paren is a CONTINUATION, not
       a new step. So a multi-line body truncated after one line, left depth 1, and
       the balance check refused the file. 10 of 169 were unmigratable. The boundary
       is now paren-aware, and the hit line is no longer assumed to BE a step start:
       `^NN` is routinely referenced from the middle of a body, so we walk back to
       the nearest enclosing step whose segment both balances and contains the hit.
       Negative depth was the tell that the anchor was too late, not that the source
       was broken.
    
    2. COMMENTING OUT A `$`-STEP CAN UNDER-APPLY THE STEP ABOVE IT. Not a paren
       problem — an ARITY problem, and silent-eval is what caught it: 4 files
       stopped compiling while 165 were fine.
    
           $ midiOff "^57" (mask "<[t f]!0 ...>")   <- a function, still hungry
           $ stack [ ... ]                          <- its argument
    
       Comment the `stack` and GHC says "midiOff is applied to too few arguments"
       and the whole do-block dies, all twelve orbits — far worse than the
       cross-orbit trigger the comment-out was avoiding. `#`-steps stay
       commentable (`#` takes a ControlPattern, so a shorter chain is still
       well-typed); `$`-steps are now ANNOTATED and left live, and the FIXME says
       so, because an annotated line IS still firing.
    
    VERIFIED against a pre-migration baseline, not against hope:
      * non-compiling tracks: 17 before, 17 after, and the SETS ARE IDENTICAL —
        zero newly broken, zero newly fixed. All 17 predate this work.
      * silent orbits: the same 19, in the same tracks, only line numbers moved.
      * pvlint: 30 -> 26 errors, no new error signature. Warnings 996 -> 1041: the
        +45 are the annotated-but-live `$`-steps honestly reporting that they still
        reach another column. Errors down, honesty up.
      * fix-button-roles: 3 clean role rewrites applied, then 0 remaining. The
        role report is otherwise unchanged from HEAD, so the migration introduced
        no gate/gesture inversion — the class only PLN's ear catches.
      * migrate-columns --plan re-run: 0 moves. Converged.
    
    Left for a second pass, deliberately: 118 sites where an orbit's two own-column
    buttons carry the same role (e.g. two gestures, no gate). Those are not
    inversions — with no gate there is nothing to swap, and the grid gives d1-d3 one
    button anyway. The count rose from 74 because column-aligning the buttons is
    what made them VISIBLE; they were unevaluable before. gSel (#54) is the fix.
    PLN (Algolia) authored Aug 23, 2026
    b5ad8b6c
infusion_basse.tidal 3.05 KB
EditWeb IDE
×

Replace infusion_basse.tidal

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.