Package version numbers
Package version numbers must always allow upgrades to the next release without this repository in the sources list. This is important so that normal users are able to upgrade their system following established upgrade procedures as they would expect. Unfortunately, this implies that the version numbering can get a bit tricky in order to ensure that packages will upgrade properly. The following is an abbreviated example of how the version number sequence must fit between Ubuntu gutsy and hardy.
gutsy < gutsy-upgrades|security < gutsy-sil <= gutsy-sil-testing < gutsy-sil-experimental < hardy
If a given distribution (ie gutsy-upgrades) doesn't have a given package but a lower one does, then just skip that part of the ordering. Note that in the case where the package just moves from *-sil-testing to *-sil, the versions in those distributions will be the same and would be the exact same package.
In rare occasions, there may be exceptions to this versioning pattern. For example, if there was a documentation-type package that was intended to be identical across all architectures of all releases and that was intended to never be part of Debian/Ubuntu proper, then that package might have the same version in all cases. However, about the only case that I can think of that would clearly be of this type would be a package that contained the public gpg key used to sign the repository if a package like this was even desired.