Possible evil solution:
(let ((asdf::*defined-systems-table* (make-defined-systems-table))) (let ((my-system (asdf:find-system "system-to-debianize"))) <code to analyze systems> .... )
Now you just have pushed a duplicate repository, into which you are loading new definitions, and when you leave the dynamic scope of *defined-systems-table*, ASDF will continue to behave normally.
This does, of course, cheat on the API, as well, but it doesn't require you to maintain compatibility with parsing, use odd accessors, etc.
Best, r