Before touching anything, it was worth checking whether the apps already extracted out of PIM’s journal module — diary, task, worklog, calendar, and the others — had drifted from the module boundaries the core architecture is supposed to enforce. They hadn’t, mostly: each depends on two narrow things from PIM’s storage module, a shared persistence base class and a file writer, and nothing deeper. That’s a deliberate, documented exception for this outer layer, not a leak.

Notes was the last app still living inside PIM core’s journal module, and the simplest one to extract — no AI conversation layer, no variant split, just a class that routes events and a handler that persists them. That made it the right one to go first: whatever pattern the extraction followed had to survive contact with the smallest possible case before it was worth repeating on anything bigger. The pattern held — the persistence listener that used to sit on core’s shared storage event service moved onto the app’s own listener instead, which turned out to be the shape every later extraction reused.

Once Notes was out, the scope of the project changed. It stopped being “finish moving the journal apps” and became “move everything out of core that isn’t the framework itself” — including the apps living in PIM’s other core module, comm, which hadn’t been part of the plan going in.