bts-link brings the remote BTSes to our Debian BTS, see the announce.
Its purpose is to allow to Fire and forget bugs reports to upstreams, and let an automatic tool track the upstream bug status. It was once written to help the pkg-kde team, and was then extended so that other teams and other BTSes than bugzilla could be supported. At the time when this documentation was written, bts-link supports:
bugzilla (and issuezilla);
gnats;
launchpad;
mantis;
savane (from savanah);
sourceforge trackers;
trac.
bts-link uses the forwarded state of debian bugs to detect URI's of remote BTSes it knows about. The _current_ configuration file is always available from gitweb.
Then, based on its information, it polls the remote BTSes, gets the remote bug _status_, and _resolution_ if the bug was closed, and acts accordingly.
bts-link uses usertags to store its informations. The user is bts-link-upstream@lists.alioth.debian.org and it uses status-* and resolution-* tags to store those informations.
Then each time the upstream bug status changes, bts-link takes the following decisions:
if the bug was previously opened, then closed: it tags the debian bug fixed-upstream ;
if the bug was previously closed, then re-opened: it removes the tag fixed-upstream ;
if the upstream resolution is also detected as a wontfix-like (it does not catches everyone of them though): it adds a wontfix tag (and it will remove it also if the resolution moves from a wontfix state to another one).
bts-link will never _ever_ try to change tags in any other conditions. It hence means that if you (as a Debian Maintainer) think that the bug isn't fixed upstream, whatever upstream claims, you can completely remove the fixed-upstream tag, bts-link won't force it back, _except_ if upstream re-opens the bug, then closes it again.