# K1 launch nodes
`kcode-k1-launch-nodes` owns one synchronous append-only file that maps globally unique target IDs to Kmap launch-node IDs. A target ID is one canonical 12-byte K1 identifier; there is no target-kind discriminator. Harness, agent, model, user, interface, and future target IDs therefore share one namespace.
`LaunchNodes::open` takes the exact file path. Its parent directory must already exist. It creates the file when absent and synchronizes the parent directory, then replays the complete local history into an in-memory last-write-wins map. It does not read KTO or any other transaction history. A partial final record is truncated and synchronized; a corrupt complete record fails open.
Each 28-byte record contains the 12-byte target ID, 12-byte launch `NodeId`, and a 4-byte little-endian checksum over the first 24 bytes. This 0.1.0 format has no migration reader.
`set` always appends and synchronizes one record before changing memory, including when the requested binding equals the current binding. `get` reads the current in-memory value. Calls are serialized within one process. Opening costs O(record count), `get` has expected O(1) work, and `set` has expected O(1) memory work plus one append and file synchronization.
This package has no UI or session integration, node loading, budgets, defaults, authorization, target categories, removal, listing, compaction, global persistence framework, networking, callbacks, background work, or multiprocess coordination.