The process of initialising a new distrorelease based on its parent distrorelease (done by scripts/ftpmaster-tools/initialise-from-parent.py) does not copy upstream packaging links. For example, at the time of writing shortly after opening /ubuntu/gutsy, https://beta.launchpad.net/usb-discover/+packages has a link to /ubuntu/feisty/+source/usb-discover but not to /ubuntu/gutsy/+source/usb-discover. This information should be carried over automatically when opening a new distrorelease; if it later becomes inaccurate, the right approach is to override it in the usual gardening way in the few cases where that happens, rather than requiring lots of work in the common case.
(For what it's worth, this discourages me from bothering to fill in the upstream links. I've spent some time doing so in the past, but why should I spend time on this when the data will all be invalidated in six months? I think it's really important to carry this over automatically from release to release.)
I don't understand the packaging system very well, neither how exactly it should be used in productseries.
However, IIRC, lifeless introduced it in a way it could be recursively found based on distrorelease. parent. This way the Packaging. distrorelease only represents when/where the packaging relationship was established and it continues to be valid for all derivations of that distrorelease context until someone establishes the opposite.
As you can see in: https:/ /beta.launchpad .net/ubuntu/ gutsy/+ source/ usb-discover/ +packaging
As far as I could see by checking the ProductSeries and Products, those methods are not following the Packaging rule:
* Expand packaging across derivations until we find a new explicit Packaging entry.
Anyway, I agree that this rule sounds annoying and very unnatural to follow (and hard & expensive to do using sqlobject).
Perhaps ddaa is in a better position to explain/discuss this.