Skip to main content

ISO Tracker - Interstellar Tracking Application Progress

Published: November 20, 20254 min read
#ISO Tracker#ISI#Interstellar Object

Progress Report - November 19, 2025

Project: ISO Tracker

✅ Completed

  • Sprint 7 Complete: NASA Horizons API Integration & Orbital Visualization - Fully integrated real-time NASA JPL Horizons API for ephemeris data, built interactive 2D orbital visualization with time controls, and created comprehensive data tables showing all three interstellar objects (1I/'Oumuamua, 2I/Borisov, 3I/ATLAS)

  • 10/10 Automated Tests Passing - Built complete Playwright test suite covering visualization rendering, tab navigation, data display, and accessibility, with all tests passing after comprehensive bug fixing

  • NASA API Verification Complete - Verified all three interstellar objects return real ephemeris data from NASA JPL Horizons system using simple designations ('1I', '2I', '3I')

  • Manual Testing & UX Validation - Conducted thorough end-user testing across all features, confirmed core functionality working perfectly, and identified 4 minor UX polish items for future enhancement

  • Sprint 8 Mission Initiated - Started next major feature: location-based observation planning tool with visibility windows, sky maps, and geographic availability

  • File Persistence Bug Recovery - Successfully recovered from critical file persistence bug during Sprint 8 Phase 8.1 using documented protocol (5-minute recovery vs hours of rework)

🐛 Issues & Learnings

Issue #1: NASA API Parameter Quoting Failure (CRITICAL)

  • Root Cause: NASA JPL Horizons API rejects multi-value parameters without proper quoting. JavaScript's URLSearchParams strips quotes, causing "Too many constants" errors for parameters like QUANTITIES=1,20
  • Fix: Completely rewrote API parameter handling to use manual query string construction, preserving required quotes (QUANTITIES='1,20'). Simplified data request to essential fields only.
  • Prevention: Never use URLSearchParams for APIs requiring quoted parameters. Document API-specific parameter requirements. Test with curl before implementing in code.
  • Time Impact: ~1.5 hours including research, curl testing, and implementation

Issue #2: Database Column Name Mismatches (3 instances)

  • Root Cause: Code referenced incorrect database column names (nasa_jpl_id instead of nasa_id, 'ephemeris_cache' instead of 'iso_horizons_cache'), and object name had apostrophe in DB but not in code mapping
  • Fix: Updated all references to match actual database schema using grep to find all instances
  • Prevention: Use database schema as single source of truth. Validate column names against schema before implementation. Consider TypeScript types generated from schema.
  • Time Impact: ~20 minutes to identify and fix all instances

Issue #3: File Persistence Bug - Sprint 8 Phase 8.1

  • Root Cause: Task tool delegation creates files in agent execution context that don't persist to host filesystem after agent completion (known bug documented in CLAUDE.md)
  • Fix: Applied documented recovery protocol - extracted file contents from agent response, used coordinator Write tool directly, verified each file with ls -lh commands
  • Prevention: Always verify file existence with independent filesystem commands after Task delegation. Use coordinator Write tool for critical files instead of delegating. Document verification timestamps.
  • Time Impact: ~5 minutes (rapid recovery thanks to existing protocol vs ~6-8 hours without it)

Issue #4: Playwright Test Selector Issues

  • Root Cause: Tests used incorrect selectors ([role="tab"] for buttons without explicit tab role, looking for ephemeris table on wrong tab)
  • Fix: Updated selectors to use getByRole('button', { name: 'Overview' }) and added tab navigation before table assertions
  • Prevention: Use Playwright's recommended selector strategy (role + accessible name). Test selectors in isolation before full test implementation.
  • Time Impact: ~15 minutes

Impact Summary

Sprint 7 shipped successfully with NASA's real-time orbital data powering interactive visualizations. All 10 automated tests passing provides confidence in core functionality. The manual testing revealed core features work perfectly while identifying non-blocking UX improvements for future iterations. Sprint 8 has begun to transform ISO Tracker from passive viewer to active observation planning tool.

Next Steps

  • Complete Sprint 8 Phase 8.1: Location services and coordinate transformation system
  • Build visibility window calculation engine (Phase 8.2)
  • Create interactive sky map for observation planning (Phase 8.3)
  • Continue applying file persistence verification protocol

Generated from progress.md on November 19, 2025 at 23:45

Share this post