Files
2026-05-27 23:29:53 +01:00

148 lines
9.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 1. geo — Abstract Geometry
- [ ] 1.1 Scaffold `@suaveplan/geo` package in `packages/geo/geo` with `package.json`, `tsconfig.json`, `vitest.config.ts` (100/100/100/100 thresholds)
- [ ] 1.2 Implement `Ellipsoid` type and `defineEllipsoid(a, b)` factory
- [ ] 1.3 Implement `SphericalCoord`, `Vec3`, `Mat3x3` types
- [ ] 1.4 Implement `geo/transforms` — `sphericalToCartesian`, `cartesianToSpherical`, `toRadians`, `toDegrees`
- [ ] 1.5 Implement `geo/distance` — `greatCircleDistance` and `vincentyDistance`
- [ ] 1.6 Implement `geo/bearing` — `bearing`, `destination`, `midpoint`
- [ ] 1.7 Implement `geo/angular` — `angularSeparation`
- [ ] 1.8 Implement `geo/bounds` — `BoundingBox`, `createBoundingBox`, `containsPoint`, `expandBox`, `mergeBoxes`, `intersects`
- [ ] 1.9 Implement `geo/polygon` — `pointInPolygon`, `polygonArea`, `polygonPerimeter`, `simplifyPolygon`
- [ ] 1.10 Implement `geo/units` — `DistanceUnit`, `convertDistance`
- [ ] 1.11 Add Zod schemas for all public option types
- [ ] 1.12 Add OTel spans on all public entrypoints
- [ ] 1.13 Write tests achieving 100% coverage for all source files
- [ ] 1.14 Write sibling `.md` docs for every implementation file
- [ ] 1.15 Write `README.md` with install, quick-start, and module links
- [ ] 1.16 Configure explicit named barrel exports for all subpaths (no `export *`)
- [ ] 1.17 Run `bunx turbo lint typecheck test build --filter=@suaveplan/geo` and fix all errors
- [ ] 1.18 Run `bunx turbo test:coverage --filter=@suaveplan/geo` and verify 100%
## 2. geo-planet — Configurable Planet Surface
- [ ] 2.1 Scaffold `@suaveplan/geo-planet` package in `packages/geo/geo-planet`
- [ ] 2.2 Implement `PlanetConfig`, `AtmosphereConfig`, `SatelliteConfig`, `OrbitalConfig`, `PlanetTextureManifest` types with Zod schemas
- [ ] 2.3 Implement `PlanetSurface` class delegating geometry to `@suaveplan/geo`
- [ ] 2.4 Implement `atmosphericDensity(altitudeMetres)` using scale-height model
- [ ] 2.5 Implement `airMass(altitudeDeg)` using Kasten–Young formula
- [ ] 2.6 Add OTel spans and `AbortSignal` support on async methods
- [ ] 2.7 Write tests achieving 100% coverage
- [ ] 2.8 Write sibling `.md` docs and `README.md`
- [ ] 2.9 Configure explicit named barrel exports
- [ ] 2.10 Run lint, typecheck, test, build, and coverage gates
## 3. geo-earth — Earth Configuration
- [ ] 3.1 Scaffold `@suaveplan/geo-earth` package in `packages/geo/geo-earth`
- [ ] 3.2 Define `EARTH` `PlanetConfig` constant (WGS84, Moon, ISA atmosphere)
- [ ] 3.3 Create `earthSurface` `PlanetSurface` instance from `EARTH`
- [ ] 3.4 Migrate and preserve legacy `@suaveplan/geo` public API: geocoding, geohash, coordinate parsing/formatting
- [ ] 3.5 Implement `GeocodingProvider`, `GeocodingResult`, `createInMemoryProvider`, `batchGeocode`
- [ ] 3.6 Implement `encodeGeohash`, `decodeGeohash` with round-trip fidelity
- [ ] 3.7 Implement `parseCoordinate`, `formatCoordinate` (DMS and decimal)
- [ ] 3.8 Write parity checklist comparing legacy `@suaveplan/geo` to `geo-earth`
- [ ] 3.9 Add Zod schemas, OTel spans, and `AbortSignal` where async
- [ ] 3.10 Write tests achieving 100% coverage
- [ ] 3.11 Write sibling `.md` docs and `README.md`
- [ ] 3.12 Configure explicit named barrel exports
- [ ] 3.13 Run lint, typecheck, test, build, and coverage gates
- [ ] 3.14 Run dependent sweep: `bunx turbo test --filter=...@suaveplan/geo-earth`
## 4. universe — Observer Model, Frames, Plugin Registry, Wire Protocol
- [ ] 4.1 Scaffold `@suaveplan/universe` package in `packages/geo/universe`
- [ ] 4.2 Implement `ObserverPosition` discriminated union type
- [ ] 4.3 Implement `CoordinateFrame` union and `convertFrame`, `toHeliocentric`, `toGalactic`
- [ ] 4.4 Implement `CelestialBody`, `CatalogStar`, `ObservedStar`, `StarQueryOptions`, `TideExtreme` types
- [ ] 4.5 Implement `SolarProvider`, `StarProvider`, `TidalProvider`, `WeatherState`, `WeatherProvider` interfaces
- [ ] 4.6 Implement `UniverseClient` with typed `register` methods and `getScene`
- [ ] 4.7 Implement `UniverseScene` shape
- [ ] 4.8 Define `StarPacket` BitSchema (~11 bytes/star) with `packStars` / `unpackStars`
- [ ] 4.9 Define `CelestialBodyPacket` BitSchema with `packBodies` / `unpackBodies`
- [ ] 4.10 Add Zod schemas for all public option types
- [ ] 4.11 Add OTel spans on all public entrypoints
- [ ] 4.12 Add `AbortSignal` on all async provider interface methods
- [ ] 4.13 Write tests achieving 100% coverage
- [ ] 4.14 Write sibling `.md` docs and `README.md`
- [ ] 4.15 Configure explicit named barrel exports
- [ ] 4.16 Run lint, typecheck, test, build, and coverage gates
## 5. solar-system — Solar System Provider
- [ ] 5.1 Scaffold `@suaveplan/solar-system` package in `packages/geo/solar-system`
- [ ] 5.2 Add `astronomy-engine` dependency via catalog ref
- [ ] 5.3 Implement `AstronomyEngine` interface and default astronomy.js wrapper
- [ ] 5.4 Implement `createSolarSystemProvider` with injectable engine
- [ ] 5.5 Implement real body position computation (Sun, Moon, Mercury–Neptune, Pluto, Ceres)
- [ ] 5.6 Implement Keplerian propagator for custom planets with `OrbitalConfig`
- [ ] 5.7 Implement `angularDiameterArcmin`, `apparentMagnitude`, `heliocentricPosition` fields
- [ ] 5.8 Implement `getSunrise`, `getSunset` in UTC
- [ ] 5.9 Implement `getSeason`, `getNextEquinox`, `getNextSolstice` (default Earth, configurable planet)
- [ ] 5.10 Implement `getLunarPhase`, `predictEclipse`, `getConstellation`
- [ ] 5.11 Apply atmospheric extinction for surface observers with `AtmosphereConfig`
- [ ] 5.12 Add Zod schemas, OTel spans, `AbortSignal`
- [ ] 5.13 Write tests achieving 100% coverage (inject deterministic engine for unit tests)
- [ ] 5.14 Write sibling `.md` docs and `README.md`
- [ ] 5.15 Configure explicit named barrel exports
- [ ] 5.16 Run lint, typecheck, test, build, and coverage gates
## 6. stars — Star Catalog Provider
- [ ] 6.1 Scaffold `@suaveplan/stars` package in `packages/geo/stars`
- [ ] 6.2 Implement `RawStar` type with optional proper motion and parallax
- [ ] 6.3 Implement `StarCatalogSource` interface
- [ ] 6.4 Bitpack BSC5 catalog at build time into compact binary (~100 KB)
- [ ] 6.5 Implement `createBsc5Source` returning offline `StarCatalogSource`
- [ ] 6.6 Implement `StarProviderImpl` with priority-ordered sources
- [ ] 6.7 Implement horizon frame computation from `ObserverPosition`
- [ ] 6.8 Implement `getVisibleStars` with hemisphere query, altitude filter, magnitude filter, brightness sort
- [ ] 6.9 Implement `queryCone` returning `CatalogStar[]` without observer fields
- [ ] 6.10 Implement atmospheric extinction via Pogson's formula and Kasten–Young air mass
- [ ] 6.11 Implement `getStar` by catalog ID
- [ ] 6.12 Define `SurrealAdapterLike`, `SurrealStarProviderOptions`, `createSurrealStarSource` (structural interface, no hard dep)
- [ ] 6.13 Define deferred factory types: `createHipparcosSource`, `createTycho2Source`, `createGaiaSource` with `fetchFn` and `cacheFn`
- [ ] 6.14 Add Zod schemas, OTel spans, `AbortSignal`
- [ ] 6.15 Write tests achieving 100% coverage
- [ ] 6.16 Write sibling `.md` docs and `README.md`
- [ ] 6.17 Configure explicit named barrel exports (ensure `stars/catalogs/bsc5` is optional)
- [ ] 6.18 Run lint, typecheck, test, build, and coverage gates
## 7. tides — Enterprise Rewrite
- [ ] 7.1 Scaffold `@suaveplan/tides` package in `packages/geo/tides`
- [ ] 7.2 Preserve TICON harmonic engine, station data, and provider logic
- [ ] 7.3 Preserve ADMIRALTY provider logic and station data
- [ ] 7.4 Implement `createTiconProvider` returning `TidalProvider`
- [ ] 7.5 Implement `createAdmiraltyProvider(options)` with injectable `fetchFn`, `clockFn`, optional `cacheFn`
- [ ] 7.6 Implement `createPhysicsBasedProvider` for any `PlanetConfig` with satellites
- [ ] 7.7 Implement `tidalHeight` with multi-satellite superposition
- [ ] 7.8 Implement `satelliteTidalContribution` for per-satellite visualisation
- [ ] 7.9 Implement `TidalProviderImpl` routing Earth by name to `earthProviders`, non-Earth to `physicsProvider`
- [ ] 7.10 Add Zod schemas for all public option types
- [ ] 7.11 Add `TidesError` extending `@suaveplan/error` with stable `TIDES.*` codes
- [ ] 7.12 Add `AbortSignal` on all async methods
- [ ] 7.13 Add OTel spans, counters, histograms on every provider call
- [ ] 7.14 Write property-based tests (fast-check) on harmonic prediction engine
- [ ] 7.15 Write tests achieving 100% coverage
- [ ] 7.16 Write sibling `.md` docs and `README.md`
- [ ] 7.17 Configure explicit named barrel exports
- [ ] 7.18 Run lint, typecheck, test, build, and coverage gates
- [ ] 7.19 Run dependent sweep: `bunx turbo test --filter=...@suaveplan/tides`
## 8. Cross-cutting and Archive
- [ ] 8.1 Update `STATUS.md`: mark `geo`, `geo-planet`, `geo-earth`, `universe`, `solar-system`, `stars`, `tides` as completed
- [ ] 8.2 Update `SUMMARY.md` with per-package paragraphs
- [ ] 8.3 Update `MANIFEST.md` via `bun scripts/folder-reorg/generate-manifest.ts`
- [ ] 8.4 Update `MISSING.yml` via `bun scripts/generate-missing.ts`
- [ ] 8.5 Run `bunx markdownlint-cli2 --fix` on all touched root docs
- [ ] 8.6 Run `bunx turbo lint typecheck test` across the full universe-family filter set
- [ ] 8.7 Verify zero banned patterns in all new package `src/` directories
- [ ] 8.8 Verify zero `export *` in feature barrels
- [ ] 8.9 Verify zero direct `vitest`/`bun:test` imports in non-exempt packages
- [ ] 8.10 Verify every `.ts` has a sibling `.md`
- [ ] 8.11 Verify every package has a `README.md`
- [ ] 8.12 Verify no bare version strings in any new `package.json`
- [ ] 8.13 Archive change: move `openspec/changes/enterprise-universe-family` to `openspec/archive/2026-04-25-enterprise-universe-family`