Commit graph

3 commits

Author SHA1 Message Date
nigig-ci
833181faec ci(map): fix the ratchet aborting before it could evaluate anything
All checks were successful
nigig-map / test (push) Successful in 5m41s
repo hygiene / hygiene (push) Successful in 4s
First real run of nigig-map.yml reported failure at 530 passed /
9 failed -- exactly the baseline it was supposed to allow.

The step ran `out="$(cargo test ...)"` under the runner's `-e` shell.
cargo test exits 101 while any test fails, and a failing command
substitution in a plain assignment aborts the step immediately, so
neither the parse nor the comparison ever executed. The `set -o
pipefail` I had added made it worse, not better.

`|| status=$?` puts the assignment inside a tested compound command,
which -e exempts, so the script keeps control and decides for itself.

Verified against the same `bash -e` the runner uses:
  at baseline      530 passed / 9 failed  -> exit 0, "OK"
  regressed        527 passed / 12 failed -> exit 1, "12 failing ...
                                             baseline is 9"
  restored         530 passed / 9 failed  -> exit 0

My bug, introduced in de698b1. The rest of that workflow was sound:
the same run proved checkout, native deps, the pinned-toolchain
install and the build gate all pass, which is the first time this
crate has ever built in CI.
2026-08-04 05:15:00 +00:00
nigig-ci
de698b1a64 ci(map): make the workflow runnable, and cover the code it now guards
Some checks failed
nigig-map / test (push) Failing after 2m37s
repo hygiene / hygiene (push) Successful in 4s
nigig-map.yml has never executed a single step. It used
actions/setup-rust@v1, which does not exist on data.forgejo.org, so
every run died in "Set up job" with "repository not found" and
cancelled all seven steps -- the same class of defect as
android-actions/setup-android in sms.yml. Replaced with the inline
rustup install already used by pay-domain.yml.

That action also requested `toolchain: stable`, contradicting the
1.97.1 pin in rust-toolchain.toml. The replacement reads the channel
out of rust-toolchain.toml, so CI and developers use one compiler.

Added the native GL/wayland dependencies; Makepad does not build
without them.

Gates, scoped to what is honestly true today now that the crate
compiles:

  - Build is a hard gate. This is the regression that matters: until
    the previous commit the crate did not compile at all.

  - Unit tests are a RATCHET at 9, not a hard gate. 535 unit tests
    existed and had never run; 526 pass and 9 fail on real logic
    (4 mvt_parser, 1 overpass_parser, 4 sprite classification). Failing
    the build on those would mean a permanently red job that everyone
    learns to ignore. The ratchet fails the moment a tenth appears.

  - `cargo test` with no filter is NOT used: two of the four test
    targets and the criterion bench do not compile (tests/ui.rs imports
    makepad_widgets::makepad_test; tests/makepad_visual_tests.rs and
    benches/tile_decode_bench.rs import pub(crate) modules, and
    criterion is not a declared dev-dependency). Separate defects.

  - fmt and clippy report without gating, matching doc-engine.yml and
    sms.yml. rustfmt could not parse view.rs while the crate was broken
    so it skipped all of src/; there are now 392 visible pre-existing
    diffs and 132 clippy warnings. A step that always fails is worse
    than no step.

Also added four unit tests for center_lat() and meters_per_pixel().
Both were introduced in the compile fix and had zero coverage: I
verified that by regressing center_lat() by +1.0 degree and watching
the ratchet stay green at 9. It now fails at 12. The tests round-trip
the projection across eight latitudes, pin the equator to zero, check
hemisphere sign, and assert the ground scale ratio between 0 and 60
degrees is cos(60) = 0.5 -- the position puck's accuracy circle is
sized from that, so an inversion would be wrong by 2x at Nordic
latitudes.

Ratchet negative-tested both ways: perturbing lon_lat_to_normalized
takes it 9 -> 12 and fails; at HEAD it reports 530 passed, 9 failed
and passes.
2026-08-04 05:06:48 +00:00
08d3e9a7fb fix(map): increase MAX_ELEMENTS_PER_TILE to 250k and add CI workflow
Some checks failed
nigig-map / test (push) Has been cancelled
- Increased MAX_ELEMENTS_PER_TILE from 100,000 to 250,000 to handle
  Kenya MBTiles that contain 101k-140k elements per tile
- Updated security limit test to use valid JSON with 260k elements
- Added .forgejo/workflows/nigig-map.yml CI workflow to catch
  map-related regressions in tile parsing, style compilation,
  and tessellation

Fixes runtime errors:
- 'failed to triangulate local mbtile: too many elements (N > 100000)'
- Tiles with 101k-140k elements now process successfully
2026-07-28 20:41:02 +00:00