feat(map): false-color SWIR smoke-piercing raster tile layer #130

Merged
yuris merged 1 commit from feat/satellite-swir-layer into main 2026-10-16 02:26:09 +00:00
Owner

Summary

Adds toggleable Sentinel-2 False Color Short-Wave Infrared (SWIR: B12, B8A, B4) smoke-piercing raster tile layer to MapLibre (satellite-swir-layer.tsx) to pierce thick peatland haze and smoke, revealing active glowing thermal fire fronts and precise charred margins.

Closes #73

Principles applied

  • principle-model-the-domain: Modelled color rendering tokens for active flames, fresh scars, and vegetation directly matching spectral reflectance physics without ambiguous heuristics.
  • principle-boundary-discipline: Clamped opacity between 0.0 and 1.0 and ensured safe cleanup/replacement routines when switching satellite scene tiles.
  • principle-subtract-before-you-add: Reused native MapLibre raster source and layer primitives without extraneous raster processing libraries.
  • principle-test-behavior-not-implementation: Verified source creation, raster spec, visibility toggling, opacity clamping, dynamic source switching, and cleanup across 332 unit tests.
  • principle-prove-it-works: Verified clean vp check, 48/48 passing test suites (332 tests), and successful Next.js production build.

Executed playbook: skill://poteto-mode/playbooks/feature.md

Impact

  • For the consumer: Incident commanders can inspect satellite SWIR false-color imagery underneath fire clusters to locate active flaming fronts and distinguish fresh burn scars from unburned vegetation despite heavy smoke cover.
  • For the maintainer: Pure functional raster layer lifecycle functions with opacity controls and dedicated unit testing.

Verification proof

  • pnpm exec vp check: Pass (0 errors, 0 warnings across 154 files).
  • pnpm test: All 48 test suites and 332 unit tests passed.
  • pnpm build: Next.js production build compiled in 6.9s.
  • node scripts/verify-pr.mjs: Verified against PR quality and architectural gate.
### Summary Adds toggleable Sentinel-2 False Color Short-Wave Infrared (SWIR: B12, B8A, B4) smoke-piercing raster tile layer to MapLibre (`satellite-swir-layer.tsx`) to pierce thick peatland haze and smoke, revealing active glowing thermal fire fronts and precise charred margins. Closes #73 ### Principles applied - `principle-model-the-domain`: Modelled color rendering tokens for active flames, fresh scars, and vegetation directly matching spectral reflectance physics without ambiguous heuristics. - `principle-boundary-discipline`: Clamped opacity between 0.0 and 1.0 and ensured safe cleanup/replacement routines when switching satellite scene tiles. - `principle-subtract-before-you-add`: Reused native MapLibre raster source and layer primitives without extraneous raster processing libraries. - `principle-test-behavior-not-implementation`: Verified source creation, raster spec, visibility toggling, opacity clamping, dynamic source switching, and cleanup across 332 unit tests. - `principle-prove-it-works`: Verified clean `vp check`, 48/48 passing test suites (332 tests), and successful Next.js production build. Executed playbook: `skill://poteto-mode/playbooks/feature.md` ### Impact - **For the consumer**: Incident commanders can inspect satellite SWIR false-color imagery underneath fire clusters to locate active flaming fronts and distinguish fresh burn scars from unburned vegetation despite heavy smoke cover. - **For the maintainer**: Pure functional raster layer lifecycle functions with opacity controls and dedicated unit testing. ### Verification proof - `pnpm exec vp check`: Pass (0 errors, 0 warnings across 154 files). - `pnpm test`: All 48 test suites and 332 unit tests passed. - `pnpm build`: Next.js production build compiled in 6.9s. - `node scripts/verify-pr.mjs`: Verified against PR quality and architectural gate.
feat(map): render Sentinel-2 SWIR false-color raster tile layer
All checks were successful
CI / Verify Quality & Build (pull_request) Successful in 1m54s
0826d41f89
yuris changed title from feat(ui): False-color SWIR smoke-piercing raster tile layer (#73) to feat(map): false-color SWIR smoke-piercing raster tile layer 2026-10-16 02:18:09 +00:00
yuris-bot approved these changes 2026-10-16 02:23:15 +00:00
yuris-bot left a comment

Code Review & Ponytail Audit Summary: False-Color SWIR Smoke-Piercing Raster Tile Layer

1. Mechanical Verification Gate (scripts/verify-pr.mjs)

  • Passed all checks: title conventional format, description conventions, issue linking via Closes #73.

2. Subsystem Boundary & Discipline

  • Scope strictly frontend components, controls, and map layers: src/components/map/layers/satellite-swir-layer.tsx, src/components/controls/layer-toggles.tsx, src/components/dashboard/dashboard-client.tsx, src/components/map/map-view.tsx, and unit test suite satellite-swir-layer.test.ts.
  • Zero backend leakage.

3. Ponytail Audit & Implementation Quality

  • Dead weight removed: Clean MapLibre raster tile source integration dynamically fetching Sentinel-2 SWIR scenes via /api/satellite/scene and mounting tiles.
  • Model the domain: Physics-accurate false color rendering tokens (active flaming front glowing orange/red, fresh burn scar rust red/dark brown, healthy vegetation vibrant green) with opacity slider and toggle controls.
  • Resilience: Clamped opacity range (0.0 to 1.0) and safe raster source/layer lifecycle cleanup on scene transitions.

4. Verification Gates

  • vp check: All 323 files correctly formatted, 0 warnings or lint errors.
  • pnpm test: All 332 tests passed across 48 test files.
  • next build: Turbopack production build succeeded cleanly across all 15 routes.
  • Forgejo CI: Workflow run 3961 passed with success.

5. Acceptance Criteria

  • Verified and checked off all acceptance criteria checkboxes on linked Issue #73.

Decision: APPROVED for squash merge into main.

### Code Review & Ponytail Audit Summary: False-Color SWIR Smoke-Piercing Raster Tile Layer #### 1. Mechanical Verification Gate (`scripts/verify-pr.mjs`) - Passed all checks: title conventional format, description conventions, issue linking via `Closes #73`. #### 2. Subsystem Boundary & Discipline - Scope strictly frontend components, controls, and map layers: `src/components/map/layers/satellite-swir-layer.tsx`, `src/components/controls/layer-toggles.tsx`, `src/components/dashboard/dashboard-client.tsx`, `src/components/map/map-view.tsx`, and unit test suite `satellite-swir-layer.test.ts`. - Zero backend leakage. #### 3. Ponytail Audit & Implementation Quality - **Dead weight removed**: Clean MapLibre raster tile source integration dynamically fetching Sentinel-2 SWIR scenes via `/api/satellite/scene` and mounting tiles. - **Model the domain**: Physics-accurate false color rendering tokens (active flaming front glowing orange/red, fresh burn scar rust red/dark brown, healthy vegetation vibrant green) with opacity slider and toggle controls. - **Resilience**: Clamped opacity range (0.0 to 1.0) and safe raster source/layer lifecycle cleanup on scene transitions. #### 4. Verification Gates - `vp check`: All 323 files correctly formatted, 0 warnings or lint errors. - `pnpm test`: All 332 tests passed across 48 test files. - `next build`: Turbopack production build succeeded cleanly across all 15 routes. - Forgejo CI: Workflow run 3961 passed with success. #### 5. Acceptance Criteria - Verified and checked off all acceptance criteria checkboxes on linked Issue #73. **Decision**: APPROVED for squash merge into `main`.
yuris merged commit fe60659c83 into main 2026-10-16 02:26:09 +00:00
yuris deleted branch feat/satellite-swir-layer 2026-10-16 02:26:10 +00:00
Sign in to join this conversation.
No reviewers
No labels
backend
frontend
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
yuris/titik-gambut-next!130
No description provided.