Gate the gesture vocabulary the way the matrix is gated
🐳 Android image / Build and push (push) Successful in 3s
Build and test / android-image (push) Successful in 3s
Build and test / Desktop (Linux) (push) Failing after 1h16m50s
Build and test / Layer separation (push) Successful in 39s
Traceability / Requirement traces (push) Successful in 50s
Build and test / Android (aarch64) (push) Successful in 22m27s
🐳 Android image / Build and push (push) Successful in 3s
Build and test / android-image (push) Successful in 3s
Build and test / Desktop (Linux) (push) Failing after 1h16m50s
Build and test / Layer separation (push) Successful in 39s
Traceability / Requirement traces (push) Successful in 50s
Build and test / Android (aarch64) (push) Successful in 22m27s
Three holes, all found by the gate catching itself out. **Prose that mentions the tag was read as a tag.** `dr-ui`'s module list carries a comment saying where the generated table comes from, and it names `GESTURE:` in passing; the scan extracted that sentence fragment as a gesture with no place and no way to perform it. A tag must now *open* its comment. A line that merely mentions it is describing the mechanism, not declaring a member of it, and position is the only thing that tells the two apart — which also makes the string-literal guard fall out for free rather than being a special case. **Neither artefact was regenerated on commit.** They cite line numbers, so they go stale on anything that moves a line — the sheet commit made the document wrong about every gesture in `library.slint` without touching a single one. The pre-commit hook that already keeps the matrix in step now keeps these too, and unlike the matrix it *fails* rather than shrugging when the scan does: a matrix that will not build leaves a stale one in place, where a malformed gesture block means a user about to be told the wrong thing. **CI did not check them at all.** It does now, blocking. The matrix is read; the gesture table is *shown to somebody using the application*, and a stale one tells them to perform a gesture that no longer exists — from which they will conclude the application is broken rather than the page. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -121,7 +121,7 @@ _None._
|
||||
| FR-UI-1 | [`ui/dr-ui/src/lib.rs:3172`](../ui/dr-ui/src/lib.rs#L3172), [`ui/dr-ui/src/lib.rs:89`](../ui/dr-ui/src/lib.rs#L89), [`ui/dr-ui/src/masks_ui.rs:816`](../ui/dr-ui/src/masks_ui.rs#L816), [`ui/dr-ui/ui/identity.slint:181`](../ui/dr-ui/ui/identity.slint#L181), [`ui/dr-ui/ui/library.slint:1099`](../ui/dr-ui/ui/library.slint#L1099) |
|
||||
| FR-UI-2 | [`ui/dr-ui/src/collections_ui.rs:1002`](../ui/dr-ui/src/collections_ui.rs#L1002), [`ui/dr-ui/src/collections_ui.rs:1012`](../ui/dr-ui/src/collections_ui.rs#L1012), [`ui/dr-ui/src/collections_ui.rs:119`](../ui/dr-ui/src/collections_ui.rs#L119), [`ui/dr-ui/src/collections_ui.rs:1495`](../ui/dr-ui/src/collections_ui.rs#L1495), [`ui/dr-ui/src/collections_ui.rs:1509`](../ui/dr-ui/src/collections_ui.rs#L1509), [`ui/dr-ui/src/collections_ui.rs:160`](../ui/dr-ui/src/collections_ui.rs#L160), [`ui/dr-ui/src/collections_ui.rs:1761`](../ui/dr-ui/src/collections_ui.rs#L1761), [`ui/dr-ui/src/collections_ui.rs:2812`](../ui/dr-ui/src/collections_ui.rs#L2812), [`ui/dr-ui/src/collections_ui.rs:486`](../ui/dr-ui/src/collections_ui.rs#L486), [`ui/dr-ui/src/gestures.rs:1`](../ui/dr-ui/src/gestures.rs#L1), [`ui/dr-ui/src/lib.rs:89`](../ui/dr-ui/src/lib.rs#L89), [`ui/dr-ui/src/lib.rs:96`](../ui/dr-ui/src/lib.rs#L96), [`ui/dr-ui/src/library_ui.rs:308`](../ui/dr-ui/src/library_ui.rs#L308), [`ui/dr-ui/src/library_ui.rs:5394`](../ui/dr-ui/src/library_ui.rs#L5394), [`ui/dr-ui/src/library_ui.rs:5539`](../ui/dr-ui/src/library_ui.rs#L5539), [`ui/dr-ui/src/library_ui.rs:6744`](../ui/dr-ui/src/library_ui.rs#L6744), [`ui/dr-ui/ui/adjust.slint:1072`](../ui/dr-ui/ui/adjust.slint#L1072), [`ui/dr-ui/ui/adjust.slint:544`](../ui/dr-ui/ui/adjust.slint#L544), [`ui/dr-ui/ui/adjust.slint:741`](../ui/dr-ui/ui/adjust.slint#L741), [`ui/dr-ui/ui/app.slint:2119`](../ui/dr-ui/ui/app.slint#L2119), [`ui/dr-ui/ui/app.slint:530`](../ui/dr-ui/ui/app.slint#L530), [`ui/dr-ui/ui/app.slint:537`](../ui/dr-ui/ui/app.slint#L537), [`ui/dr-ui/ui/app.slint:58`](../ui/dr-ui/ui/app.slint#L58), [`ui/dr-ui/ui/app.slint:888`](../ui/dr-ui/ui/app.slint#L888), [`ui/dr-ui/ui/controls.slint:474`](../ui/dr-ui/ui/controls.slint#L474), [`ui/dr-ui/ui/develop.slint:223`](../ui/dr-ui/ui/develop.slint#L223), [`ui/dr-ui/ui/gestures.slint:1`](../ui/dr-ui/ui/gestures.slint#L1), [`ui/dr-ui/ui/histogram.slint:127`](../ui/dr-ui/ui/histogram.slint#L127), [`ui/dr-ui/ui/history.slint:118`](../ui/dr-ui/ui/history.slint#L118), [`ui/dr-ui/ui/library.slint:1267`](../ui/dr-ui/ui/library.slint#L1267), [`ui/dr-ui/ui/library.slint:1274`](../ui/dr-ui/ui/library.slint#L1274), [`ui/dr-ui/ui/library.slint:1337`](../ui/dr-ui/ui/library.slint#L1337), [`ui/dr-ui/ui/library.slint:2692`](../ui/dr-ui/ui/library.slint#L2692), [`ui/dr-ui/ui/library.slint:3828`](../ui/dr-ui/ui/library.slint#L3828), [`ui/dr-ui/ui/library.slint:850`](../ui/dr-ui/ui/library.slint#L850), [`ui/dr-ui/ui/library.slint:906`](../ui/dr-ui/ui/library.slint#L906), [`ui/dr-ui/ui/masks.slint:314`](../ui/dr-ui/ui/masks.slint#L314), [`ui/dr-ui/ui/peaking.slint:82`](../ui/dr-ui/ui/peaking.slint#L82), [`ui/dr-ui/ui/presets.slint:19`](../ui/dr-ui/ui/presets.slint#L19), [`ui/dr-ui/ui/settings.slint:110`](../ui/dr-ui/ui/settings.slint#L110), [`ui/dr-ui/ui/spots.slint:88`](../ui/dr-ui/ui/spots.slint#L88) |
|
||||
| FR-UI-3 | [`ui/dr-ui/src/develop.rs:2224`](../ui/dr-ui/src/develop.rs#L2224), [`ui/dr-ui/src/develop.rs:2333`](../ui/dr-ui/src/develop.rs#L2333), [`ui/dr-ui/src/library_ui.rs:4503`](../ui/dr-ui/src/library_ui.rs#L4503), [`ui/dr-ui/src/masks_ui.rs:218`](../ui/dr-ui/src/masks_ui.rs#L218), [`ui/dr-ui/src/masks_ui.rs:908`](../ui/dr-ui/src/masks_ui.rs#L908), [`ui/dr-ui/src/masks_ui.rs:930`](../ui/dr-ui/src/masks_ui.rs#L930), [`ui/dr-ui/src/spots_ui.rs:19`](../ui/dr-ui/src/spots_ui.rs#L19), [`ui/dr-ui/ui/app.slint:1935`](../ui/dr-ui/ui/app.slint#L1935), [`ui/dr-ui/ui/collections.slint:4`](../ui/dr-ui/ui/collections.slint#L4), [`ui/dr-ui/ui/collections.slint:682`](../ui/dr-ui/ui/collections.slint#L682), [`ui/dr-ui/ui/masks.slint:524`](../ui/dr-ui/ui/masks.slint#L524) |
|
||||
| FR-UI-4 | [`tools/traceability/src/gestures.rs:1`](../tools/traceability/src/gestures.rs#L1), [`tools/traceability/src/gestures.rs:365`](../tools/traceability/src/gestures.rs#L365), [`ui/dr-ui/src/collections_ui.rs:1002`](../ui/dr-ui/src/collections_ui.rs#L1002), [`ui/dr-ui/src/collections_ui.rs:1012`](../ui/dr-ui/src/collections_ui.rs#L1012), [`ui/dr-ui/src/collections_ui.rs:119`](../ui/dr-ui/src/collections_ui.rs#L119), [`ui/dr-ui/src/collections_ui.rs:132`](../ui/dr-ui/src/collections_ui.rs#L132), [`ui/dr-ui/src/collections_ui.rs:1495`](../ui/dr-ui/src/collections_ui.rs#L1495), [`ui/dr-ui/src/collections_ui.rs:1509`](../ui/dr-ui/src/collections_ui.rs#L1509), [`ui/dr-ui/src/collections_ui.rs:160`](../ui/dr-ui/src/collections_ui.rs#L160), [`ui/dr-ui/src/collections_ui.rs:1625`](../ui/dr-ui/src/collections_ui.rs#L1625), [`ui/dr-ui/src/collections_ui.rs:1761`](../ui/dr-ui/src/collections_ui.rs#L1761), [`ui/dr-ui/src/collections_ui.rs:1788`](../ui/dr-ui/src/collections_ui.rs#L1788), [`ui/dr-ui/src/collections_ui.rs:1887`](../ui/dr-ui/src/collections_ui.rs#L1887), [`ui/dr-ui/src/collections_ui.rs:2812`](../ui/dr-ui/src/collections_ui.rs#L2812), [`ui/dr-ui/src/collections_ui.rs:486`](../ui/dr-ui/src/collections_ui.rs#L486), [`ui/dr-ui/src/collections_ui.rs:560`](../ui/dr-ui/src/collections_ui.rs#L560), [`ui/dr-ui/src/gesture_book.rs:3`](../ui/dr-ui/src/gesture_book.rs#L3), [`ui/dr-ui/src/gestures.rs:1`](../ui/dr-ui/src/gestures.rs#L1), [`ui/dr-ui/src/library_ui.rs:4503`](../ui/dr-ui/src/library_ui.rs#L4503), [`ui/dr-ui/src/library_ui.rs:4515`](../ui/dr-ui/src/library_ui.rs#L4515), [`ui/dr-ui/src/library_ui.rs:4567`](../ui/dr-ui/src/library_ui.rs#L4567), [`ui/dr-ui/src/library_ui.rs:4670`](../ui/dr-ui/src/library_ui.rs#L4670), [`ui/dr-ui/src/library_ui.rs:4698`](../ui/dr-ui/src/library_ui.rs#L4698), [`ui/dr-ui/src/library_ui.rs:5527`](../ui/dr-ui/src/library_ui.rs#L5527), [`ui/dr-ui/src/library_ui.rs:5539`](../ui/dr-ui/src/library_ui.rs#L5539), [`ui/dr-ui/ui/app.slint:1775`](../ui/dr-ui/ui/app.slint#L1775), [`ui/dr-ui/ui/app.slint:506`](../ui/dr-ui/ui/app.slint#L506), [`ui/dr-ui/ui/app.slint:537`](../ui/dr-ui/ui/app.slint#L537), [`ui/dr-ui/ui/app.slint:622`](../ui/dr-ui/ui/app.slint#L622), [`ui/dr-ui/ui/gestures.slint:1`](../ui/dr-ui/ui/gestures.slint#L1), [`ui/dr-ui/ui/library.slint:1075`](../ui/dr-ui/ui/library.slint#L1075), [`ui/dr-ui/ui/library.slint:1242`](../ui/dr-ui/ui/library.slint#L1242), [`ui/dr-ui/ui/library.slint:1267`](../ui/dr-ui/ui/library.slint#L1267), [`ui/dr-ui/ui/library.slint:1274`](../ui/dr-ui/ui/library.slint#L1274), [`ui/dr-ui/ui/library.slint:1330`](../ui/dr-ui/ui/library.slint#L1330), [`ui/dr-ui/ui/library.slint:1337`](../ui/dr-ui/ui/library.slint#L1337), [`ui/dr-ui/ui/library.slint:2692`](../ui/dr-ui/ui/library.slint#L2692), [`ui/dr-ui/ui/library.slint:3828`](../ui/dr-ui/ui/library.slint#L3828), [`ui/dr-ui/ui/library.slint:850`](../ui/dr-ui/ui/library.slint#L850), [`ui/dr-ui/ui/library.slint:900`](../ui/dr-ui/ui/library.slint#L900), [`ui/dr-ui/ui/library.slint:906`](../ui/dr-ui/ui/library.slint#L906), [`ui/dr-ui/ui/library.slint:925`](../ui/dr-ui/ui/library.slint#L925) |
|
||||
| FR-UI-4 | [`tools/traceability/src/gestures.rs:1`](../tools/traceability/src/gestures.rs#L1), [`tools/traceability/src/gestures.rs:366`](../tools/traceability/src/gestures.rs#L366), [`ui/dr-ui/src/collections_ui.rs:1002`](../ui/dr-ui/src/collections_ui.rs#L1002), [`ui/dr-ui/src/collections_ui.rs:1012`](../ui/dr-ui/src/collections_ui.rs#L1012), [`ui/dr-ui/src/collections_ui.rs:119`](../ui/dr-ui/src/collections_ui.rs#L119), [`ui/dr-ui/src/collections_ui.rs:132`](../ui/dr-ui/src/collections_ui.rs#L132), [`ui/dr-ui/src/collections_ui.rs:1495`](../ui/dr-ui/src/collections_ui.rs#L1495), [`ui/dr-ui/src/collections_ui.rs:1509`](../ui/dr-ui/src/collections_ui.rs#L1509), [`ui/dr-ui/src/collections_ui.rs:160`](../ui/dr-ui/src/collections_ui.rs#L160), [`ui/dr-ui/src/collections_ui.rs:1625`](../ui/dr-ui/src/collections_ui.rs#L1625), [`ui/dr-ui/src/collections_ui.rs:1761`](../ui/dr-ui/src/collections_ui.rs#L1761), [`ui/dr-ui/src/collections_ui.rs:1788`](../ui/dr-ui/src/collections_ui.rs#L1788), [`ui/dr-ui/src/collections_ui.rs:1887`](../ui/dr-ui/src/collections_ui.rs#L1887), [`ui/dr-ui/src/collections_ui.rs:2812`](../ui/dr-ui/src/collections_ui.rs#L2812), [`ui/dr-ui/src/collections_ui.rs:486`](../ui/dr-ui/src/collections_ui.rs#L486), [`ui/dr-ui/src/collections_ui.rs:560`](../ui/dr-ui/src/collections_ui.rs#L560), [`ui/dr-ui/src/gesture_book.rs:3`](../ui/dr-ui/src/gesture_book.rs#L3), [`ui/dr-ui/src/gestures.rs:1`](../ui/dr-ui/src/gestures.rs#L1), [`ui/dr-ui/src/library_ui.rs:4503`](../ui/dr-ui/src/library_ui.rs#L4503), [`ui/dr-ui/src/library_ui.rs:4515`](../ui/dr-ui/src/library_ui.rs#L4515), [`ui/dr-ui/src/library_ui.rs:4567`](../ui/dr-ui/src/library_ui.rs#L4567), [`ui/dr-ui/src/library_ui.rs:4670`](../ui/dr-ui/src/library_ui.rs#L4670), [`ui/dr-ui/src/library_ui.rs:4698`](../ui/dr-ui/src/library_ui.rs#L4698), [`ui/dr-ui/src/library_ui.rs:5527`](../ui/dr-ui/src/library_ui.rs#L5527), [`ui/dr-ui/src/library_ui.rs:5539`](../ui/dr-ui/src/library_ui.rs#L5539), [`ui/dr-ui/ui/app.slint:1775`](../ui/dr-ui/ui/app.slint#L1775), [`ui/dr-ui/ui/app.slint:506`](../ui/dr-ui/ui/app.slint#L506), [`ui/dr-ui/ui/app.slint:537`](../ui/dr-ui/ui/app.slint#L537), [`ui/dr-ui/ui/app.slint:622`](../ui/dr-ui/ui/app.slint#L622), [`ui/dr-ui/ui/gestures.slint:1`](../ui/dr-ui/ui/gestures.slint#L1), [`ui/dr-ui/ui/library.slint:1075`](../ui/dr-ui/ui/library.slint#L1075), [`ui/dr-ui/ui/library.slint:1242`](../ui/dr-ui/ui/library.slint#L1242), [`ui/dr-ui/ui/library.slint:1267`](../ui/dr-ui/ui/library.slint#L1267), [`ui/dr-ui/ui/library.slint:1274`](../ui/dr-ui/ui/library.slint#L1274), [`ui/dr-ui/ui/library.slint:1330`](../ui/dr-ui/ui/library.slint#L1330), [`ui/dr-ui/ui/library.slint:1337`](../ui/dr-ui/ui/library.slint#L1337), [`ui/dr-ui/ui/library.slint:2692`](../ui/dr-ui/ui/library.slint#L2692), [`ui/dr-ui/ui/library.slint:3828`](../ui/dr-ui/ui/library.slint#L3828), [`ui/dr-ui/ui/library.slint:850`](../ui/dr-ui/ui/library.slint#L850), [`ui/dr-ui/ui/library.slint:900`](../ui/dr-ui/ui/library.slint#L900), [`ui/dr-ui/ui/library.slint:906`](../ui/dr-ui/ui/library.slint#L906), [`ui/dr-ui/ui/library.slint:925`](../ui/dr-ui/ui/library.slint#L925) |
|
||||
| FR-UI-5 | [`ui/dr-ui/src/collections_ui.rs:1`](../ui/dr-ui/src/collections_ui.rs#L1), [`ui/dr-ui/src/lib.rs:2609`](../ui/dr-ui/src/lib.rs#L2609), [`ui/dr-ui/src/lib.rs:3211`](../ui/dr-ui/src/lib.rs#L3211), [`ui/dr-ui/src/lib.rs:3396`](../ui/dr-ui/src/lib.rs#L3396), [`ui/dr-ui/src/masks_ui.rs:863`](../ui/dr-ui/src/masks_ui.rs#L863), [`ui/dr-ui/ui/app.slint:109`](../ui/dr-ui/ui/app.slint#L109), [`ui/dr-ui/ui/collections.slint:4`](../ui/dr-ui/ui/collections.slint#L4) |
|
||||
| FR-UI-6 | [`ui/dr-ui/ui/widgets.slint:1`](../ui/dr-ui/ui/widgets.slint#L1) |
|
||||
| FR-UI-7 | [`core/dr-pipeline/src/descriptor.rs:177`](../core/dr-pipeline/src/descriptor.rs#L177), [`core/dr-pipeline/src/framing.rs:385`](../core/dr-pipeline/src/framing.rs#L385) |
|
||||
|
||||
Reference in New Issue
Block a user