It's not just on vacuum. Rowids are reused whenever stuff is deleted from the end of the table:
sqlite> CREATE TABLE t(x);
sqlite> INSERT INTO t(x) VALUES ('foo'), ('bar');
sqlite> SELECT rowid, x FROM t;
1|foo
2|bar
sqlite> DELETE FROM t WHERE x='bar';
sqlite> INSERT INTO t(x) VALUES ('baz');
sqlite> SELECT rowid, x FROM t;
1|foo
2|baz
This is true even if rowid is aliased by an INTEGER PRIMARY KEY. Whenever a row is inserted, the new rowid is simply 1 greater than the largest rowid in use (or 1 for an empty table).But Dflag is using:
rowid INTEGER PRIMARY KEY AUTOINCREMENT
which prevents ids from being reused. So this isn't actually a problem for them, but the documentation could be clearer about it.