Parses task list from document; uses runner from constructor to build Details . Builds into runner.pending only; does not touch completed.
Caller must set runner.pending to a fresh List before calling so we do not append to a previous parse. Appends to issues on each failure. Caller checks parser.issues == "" for success. On failure may set runner.pending = new List so we do not leave a half-parsed list.