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

  function compare(currentPath: string[], beforeNode: Record<string, any>, afterNode: Record<string, any>) {
    const beforeKeys = new Set(Object.keys(beforeNode));
    const afterKeys = new Set(Object.keys(afterNode));

    for (const key of afterKeys) {
      if (!beforeKeys.has(key)) {
        lines.push("added " + currentPath.concat(key).join("/"));
      }
    }

    for (const key of beforeKeys) {
      if (!afterKeys.has(key)) {
        lines.push("removed " + currentPath.concat(key).join("/"));
      } else {
        compare(currentPath.concat(key), beforeNode[key], afterNode[key]);
      }
    }
  }

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