```ts
export function outlineDiff(
  before: Record<string, any>,
  after: Record<string, any>
): string[] {
  const lines: string[] = [];

  function compareRecursive(path: string[], currentBefore: Record<string, any>, currentAfter: Record<string, any>) {
    const keysBefore = Object.keys(currentBefore);
    const keysAfter = Object.keys(currentAfter);

    for (const key of keysAfter) {
      if (!keysBefore.includes(key)) {
        lines.push("added " + path.concat(key).join("/"));
      } else {
        compareRecursive(path.concat(key), currentBefore[key], currentAfter[key]);
      }
    }

    for (const key of keysBefore) {
      if (!keysAfter.includes(key)) {
        lines.push("removed " + path.concat(key).join("/"));
      }
    }
  }

  compareRecursive([], before, after);
  return lines.sort();
}
```