Safely flushes all committed transactions from the WAL file into the main database file
and truncates the WAL to zero bytes. Returns an error if the database is busy and unable to truncate.
Ensures the symbols_fts FTS5 virtual table and synchronization triggers exist in the SQLite
database, and that it holds every symbol except locals and parameters. An index built under an
earlier rule, or one left without content, is repopulated once.
julie may write a local before its enclosing function, so the insert trigger also drops any
same-file variable that became local when its parent arrived.
SQL predicate that is true for a symbols row that is a local variable or a parameter:
a variable declared inside a function, method, or constructor, directly or through
enclosing variables such as closures.
Retargets the root_path key in artifact_metadata to a new workspace canonical root.
This is essential when cloning or copying an artifact database (e.g. into a git worktree),
ensuring julie-extract update, delete, and scan recognize the new root without root mismatch errors.