Atlas Plan
Plans002 2026 02 20 Sync and Source Config

Completed

  • T-001: Create source/config/ions-2026.yaml
  • T-002: Create source/config/ions-2025.yaml
  • T-003: Create source/config/ions-2024.yaml and ions-2023.yaml
  • T-004: Scaffold @packages/sync package
  • T-005: Implement SourceConfig TypeScript types
  • T-006: Implement duck.ts — DuckDB connection and raw table setup
  • T-007: Implement config.ts — YAML config loader
  • T-008: Implement xlsx.ts — xlsx sync runner
  • T-009: Implement seed.ts — LibSQL lookup table seeder
  • T-010: Implement index.ts — CLI entry point
  • T-011: Add root package.json scripts and update AGENTS.md
  • T-012: bun install and type-check verification
  • T-013: End-to-end sync verification

In Progress

  • None

Blocked

  • None

Pending

  • None

Learnings

  • 2026 workbook has naming anomalies that must be kept in config (REKAP FEBUARI, ' REKAP JULI', SEPTEMBER25 in DATABASE SISWA 2026).
  • Config loader now resolves YAML file paths to absolute paths from project root, avoiding package-relative path drift.
  • @duckdb/node-api does not expose header_row in read_xlsx; the sync layer uses a range derived from configured header_row as a compatibility workaround.
  • bun run test:type --filter @packages/sync depends on upstream task graph health; adding bun-types to @repo/lint resolved the Bun type import issue.

Questions

  • None

Next

  1. Optional hardening: tighten raw_targets extraction range/header handling to reduce empty-row padding.
  2. Optional cleanup: remove stale package-local @packages/sync/atlas.db artifacts created during earlier path experiments.
  3. Continue with dependent plans (transform/format/dashboard) using the now-seeded lookup + raw sync foundation.

On this page