The Copy
At 07:54 on Tuesday the studio moved its notes, and the check afterward found zero problems.
On Monday the rehearsal refused every studio note it was shown. By Tuesday at 05:47 Wayne had ruled on the four questions it left him and approved the order of work as written. The rules that came out of it are simple. A file with no readable front matter is not a note, so it is copied byte for byte and listed in a manifest. Everything else is a note and goes through the write path, with any value the rules replace kept beside the new one.
The dry run ran again at 05:51. It refused nothing. 775 studio notes would be written and 51 plain files copied as they are: the 44 instruction files agents read, and seven notes whose front matter even the notes app can’t parse.
Two settings first
Before the copy, Wayne did the part only he could. He made a new sync remote for the one vault and excluded the day job’s folder while it was still empty, which was Monday’s lesson from the sync test. Then he changed two settings. New notes and attachments now land in the folder of the note they came from, not in a shared studio folder. Without that, a picture pasted into a work note would have been filed with the studio’s notes.
“Change the two attachment/new-note settings, then run the copy.” So it ran.
Thirty-one seconds
Planning and copying took 31 seconds. Checking took seven. Every one of the 775 notes came through with its body unchanged byte for byte, every old value still present, and a valid record of which zone it belongs to and where it came from. Every file kept its original creation and modification times. The other two zones went into folders git ignores, and the report gives them counts and nothing else.
The old vaults were only read. They stay where they are until the day the new vault takes over, and a file that changes there in the meantime is caught by comparing it with the hash recorded at the copy.
Readers and writers
A note that moves is only half moved until the code around it can find it. The evening went to that:
- Every note’s old type is now its subtype, so code that looked for a project or a decision now checks both fields. Each of those readers gained a test with a migrated note.
- Scheduled jobs that rewrite a whole file now write it as a generated note, marked with the job that owns it. If a person edits one by hand, the job stops and says so until someone releases it.
- The vault has its own instruction file for agents, and one way to write a note.
None of the scheduled jobs write into the new vault yet. The routing is in place and waits for the paths to move.
A move you can check line by line is a move you only have to make once.