diff --git a/docs/BOARD_PACK.md b/docs/BOARD_PACK.md new file mode 100644 index 0000000..597165b --- /dev/null +++ b/docs/BOARD_PACK.md @@ -0,0 +1,51 @@ +# CareerOps Board Pack Schema + +The CareerOps board pack (`CareerOps_board_pack.json`) is the portable format for +career data that can be exported and imported between CareerOps installations. + +The current board pack schema version is **5**. + +Schema migrations are implemented in +`web/lib/board-pack.mjs` by `migrateV1toV2`, `migrateV2toV3`, +`migrateV3toV4`, and `migrateV4toV5`. + +## Schema changelog + +| Version | Changes | +| --- | --- | +| **v1** | Initial board pack format. | +| **v1 → v2** | Added `accomplishments` and `portfolio`. Added `profile.resume_struct`. Added doctrine flags including `no_auto_apply`, `no_invented_facts`, `resume_struct_canonical`, and `memory_provenance`. | +| **v2 → v3** | Added `no_auto_send`, `stories`, and `outcomes`. Added `sent_at` to roles and materials. Added `display_name` to materials and reports. | +| **v3 → v4** | Added `interview_events`. Added structured offer fields to outcomes: `base`, `bonus`, `equity_notes`, `remote`, `deadline`, and `currency`. | +| **v4 → v5** | Added profile target-band fields: `target_band_min`, `target_band_max`, and `target_band_currency`. Added role compensation fields `comp_range` and `comp_raw`. Added `contacts`. | + +## Export and import + +Board packs are created by `buildBoardPack` and read through +`importBoardPack` in `web/lib/board-pack.mjs`. + +`migrateBoardPack` upgrades older packs through each migration until they reach +the current schema version. + +## Secrets and doctrine + +Board packs do **not** export or import API keys, passwords, or other secret +credentials. Profile sanitization explicitly removes credential fields before +export/import. + +The board pack also preserves the project's contribution doctrine, including: + +- No automatic application sending (`no_auto_apply` / `no_auto_send`). +- No invented facts or experience. +- Canonical structured resume data. +- Memory provenance. + +The board pack format is for portable career data, not private deployment +secrets or credentials. + +## Current version + +**Schema version: 5** + +The current version is defined by `BOARD_PACK_SCHEMA_VERSION` in +`web/lib/board-pack.mjs`. diff --git a/docs/README.md b/docs/README.md index 3087311..688e589 100644 --- a/docs/README.md +++ b/docs/README.md @@ -12,6 +12,7 @@ Product homepage: see the root [README](../README.md). - [ARCHITECTURE.md](ARCHITECTURE.md) — surfaces, public vs private - [LOCAL_FIRST.md](LOCAL_FIRST.md) — ownership, self-host, export +- [BOARD_PACK.md](BOARD_PACK.md) — board pack schema changelog and import/export guidance - [PRIVACY.md](PRIVACY.md) — evidence, secrets, vault - [SECURITY.md](../SECURITY.md) — vulnerability reporting - [supabase/README.md](../supabase/README.md) — schema, migrations, credential vault diff --git a/web/README.md b/web/README.md index 5400bfc..9af5cd9 100644 --- a/web/README.md +++ b/web/README.md @@ -44,6 +44,7 @@ Pure Career OS helpers used by the SPA live in `lib/` (bullet memory, cadence, r ### Export / import - **Board pack** (`CareerOps_board_pack.json`) — skill modes + Settings import (upsert). Schema v5 adds contacts, posted `comp_range`/`comp_raw`, and profile target band. API keys never exported or imported. +- See the [Board Pack schema changelog](../docs/BOARD_PACK.md) for the v1 → v5 schema details. - **Full JSON** / **CSV** — Settings → Your data. ## Edge functions