9.5 KiB
9.5 KiB
1. geo — Abstract Geometry
- 1.1 Scaffold
@suaveplan/geopackage inpackages/geo/geowithpackage.json,tsconfig.json,vitest.config.ts(100/100/100/100 thresholds) - 1.2 Implement
Ellipsoidtype anddefineEllipsoid(a, b)factory - 1.3 Implement
SphericalCoord,Vec3,Mat3x3types - 1.4 Implement
geo/transforms—sphericalToCartesian,cartesianToSpherical,toRadians,toDegrees - 1.5 Implement
geo/distance—greatCircleDistanceandvincentyDistance - 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
.mddocs for every implementation file - 1.15 Write
README.mdwith 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/geoand fix all errors - 1.18 Run
bunx turbo test:coverage --filter=@suaveplan/geoand verify 100%
2. geo-planet — Configurable Planet Surface
- 2.1 Scaffold
@suaveplan/geo-planetpackage inpackages/geo/geo-planet - 2.2 Implement
PlanetConfig,AtmosphereConfig,SatelliteConfig,OrbitalConfig,PlanetTextureManifesttypes with Zod schemas - 2.3 Implement
PlanetSurfaceclass 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
AbortSignalsupport on async methods - 2.7 Write tests achieving 100% coverage
- 2.8 Write sibling
.mddocs andREADME.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-earthpackage inpackages/geo/geo-earth - 3.2 Define
EARTHPlanetConfigconstant (WGS84, Moon, ISA atmosphere) - 3.3 Create
earthSurfacePlanetSurfaceinstance fromEARTH - 3.4 Migrate and preserve legacy
@suaveplan/geopublic API: geocoding, geohash, coordinate parsing/formatting - 3.5 Implement
GeocodingProvider,GeocodingResult,createInMemoryProvider,batchGeocode - 3.6 Implement
encodeGeohash,decodeGeohashwith round-trip fidelity - 3.7 Implement
parseCoordinate,formatCoordinate(DMS and decimal) - 3.8 Write parity checklist comparing legacy
@suaveplan/geotogeo-earth - 3.9 Add Zod schemas, OTel spans, and
AbortSignalwhere async - 3.10 Write tests achieving 100% coverage
- 3.11 Write sibling
.mddocs andREADME.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/universepackage inpackages/geo/universe - 4.2 Implement
ObserverPositiondiscriminated union type - 4.3 Implement
CoordinateFrameunion andconvertFrame,toHeliocentric,toGalactic - 4.4 Implement
CelestialBody,CatalogStar,ObservedStar,StarQueryOptions,TideExtremetypes - 4.5 Implement
SolarProvider,StarProvider,TidalProvider,WeatherState,WeatherProviderinterfaces - 4.6 Implement
UniverseClientwith typedregistermethods andgetScene - 4.7 Implement
UniverseSceneshape - 4.8 Define
StarPacketBitSchema (~11 bytes/star) withpackStars/unpackStars - 4.9 Define
CelestialBodyPacketBitSchema withpackBodies/unpackBodies - 4.10 Add Zod schemas for all public option types
- 4.11 Add OTel spans on all public entrypoints
- 4.12 Add
AbortSignalon all async provider interface methods - 4.13 Write tests achieving 100% coverage
- 4.14 Write sibling
.mddocs andREADME.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-systempackage inpackages/geo/solar-system - 5.2 Add
astronomy-enginedependency via catalog ref - 5.3 Implement
AstronomyEngineinterface and default astronomy.js wrapper - 5.4 Implement
createSolarSystemProviderwith 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,heliocentricPositionfields - 5.8 Implement
getSunrise,getSunsetin 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
.mddocs andREADME.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/starspackage inpackages/geo/stars - 6.2 Implement
RawStartype with optional proper motion and parallax - 6.3 Implement
StarCatalogSourceinterface - 6.4 Bitpack BSC5 catalog at build time into compact binary (~100 KB)
- 6.5 Implement
createBsc5Sourcereturning offlineStarCatalogSource - 6.6 Implement
StarProviderImplwith priority-ordered sources - 6.7 Implement horizon frame computation from
ObserverPosition - 6.8 Implement
getVisibleStarswith hemisphere query, altitude filter, magnitude filter, brightness sort - 6.9 Implement
queryConereturningCatalogStar[]without observer fields - 6.10 Implement atmospheric extinction via Pogson's formula and Kasten–Young air mass
- 6.11 Implement
getStarby catalog ID - 6.12 Define
SurrealAdapterLike,SurrealStarProviderOptions,createSurrealStarSource(structural interface, no hard dep) - 6.13 Define deferred factory types:
createHipparcosSource,createTycho2Source,createGaiaSourcewithfetchFnandcacheFn - 6.14 Add Zod schemas, OTel spans,
AbortSignal - 6.15 Write tests achieving 100% coverage
- 6.16 Write sibling
.mddocs andREADME.md - 6.17 Configure explicit named barrel exports (ensure
stars/catalogs/bsc5is optional) - 6.18 Run lint, typecheck, test, build, and coverage gates
7. tides — Enterprise Rewrite
- 7.1 Scaffold
@suaveplan/tidespackage inpackages/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
createTiconProviderreturningTidalProvider - 7.5 Implement
createAdmiraltyProvider(options)with injectablefetchFn,clockFn, optionalcacheFn - 7.6 Implement
createPhysicsBasedProviderfor anyPlanetConfigwith satellites - 7.7 Implement
tidalHeightwith multi-satellite superposition - 7.8 Implement
satelliteTidalContributionfor per-satellite visualisation - 7.9 Implement
TidalProviderImplrouting Earth by name toearthProviders, non-Earth tophysicsProvider - 7.10 Add Zod schemas for all public option types
- 7.11 Add
TidesErrorextending@suaveplan/errorwith stableTIDES.*codes - 7.12 Add
AbortSignalon 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
.mddocs andREADME.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: markgeo,geo-planet,geo-earth,universe,solar-system,stars,tidesas completed - 8.2 Update
SUMMARY.mdwith per-package paragraphs - 8.3 Update
MANIFEST.mdviabun scripts/folder-reorg/generate-manifest.ts - 8.4 Update
MISSING.ymlviabun scripts/generate-missing.ts - 8.5 Run
bunx markdownlint-cli2 --fixon all touched root docs - 8.6 Run
bunx turbo lint typecheck testacross 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:testimports in non-exempt packages - 8.10 Verify every
.tshas 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-familytoopenspec/archive/2026-04-25-enterprise-universe-family