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',SEPTEMBER25in DATABASE SISWA 2026). - Config loader now resolves YAML file paths to absolute paths from project root, avoiding package-relative path drift.
@duckdb/node-apidoes not exposeheader_rowinread_xlsx; the sync layer uses arangederived from configuredheader_rowas a compatibility workaround.bun run test:type --filter @packages/syncdepends on upstream task graph health; addingbun-typesto@repo/lintresolved the Bun type import issue.
Questions
- None
Next
- Optional hardening: tighten
raw_targetsextraction range/header handling to reduce empty-row padding. - Optional cleanup: remove stale package-local
@packages/sync/atlas.dbartifacts created during earlier path experiments. - Continue with dependent plans (transform/format/dashboard) using the now-seeded lookup + raw sync foundation.