ID INTEGER PRIMARY KEY AUTO_INCREMENT; But it turns out SQLite column PRIMARY KEY's are only created under specific conditions.
Also I found the default ROWID is not returned in a SELECT * statement. By defining an integer primary key you get the speed enhancements and the ID value returned.
The rowid value can be accessed using one of the special case-independent names "rowid", "oid", or "rowid" A PRIMARY KEY column only becomes an integer primary key if the declared type name is exactly "INTEGER" Other integer type names like INT, BIGINT, SHORT INTEGER or UNSIGNED INTEGER DOES NOT replace rowid as an alias.
Its is not documented why DESC fails, only that "This quirk is not by design. It is due to a bug in early versions of SQLite. But fixing the bug could result in very serious backwards incompatibilities". The SQLite developers feel that goofy behavior in a corner case is far better than a compatibility break, so the original behavior is retained.