Understanding Dependency RC Versioning Across Functions

Curious how people handle this function versioning and tag and releases in team environments.

Let’s say on a branch I create Function A and release 0.0.1-rc-somename.

On the same branch I create Function B, which internally calls Function A. I release Function B as 0.0.2-rc-somename2 and left Function A untouched at 0.0.1.

Neither is on master yet (life happens).

Then a bug shows up in Function B. I create another branch on top of the existing one. The fix requires changing logic in Function A, so I release a new version of A and update Function B to consume it. Function B is now released as 0.0.3-rc-somename3 but A is not updated (Under Rule 0 of coding: If it works don’t touch it).

Everything is working, nobody is complaining :smiling_face_with_sunglasses:

Later, more work happens on that new branch and Function A gets another release: 0.0.4-rc-somename4.

Meanwhile, a PR gets merged to main that is still aligned with the original 0.0.1 and 0.0.2 versions of Functions A and B.

Now imagine I’m a completely different developer joining the project.

I open the code and see:

  • Main has Function A with logic Z (0.0.1)

  • Function B (0.0.3) was built against a newer version of Function A with logic Y

  • The latest tagged Function A (0.0.4) has logic X

When I start a new branch, I naturally start from main. So I don’t even have the changes that exist in those tagged versions.

Even if I’m diligent enough to go hunting through tags, my likely reaction is to copy-paste code from the latest tag. But then how do I know whether B should be using logic X from A 0.0.4, logic Y from the version it was originally tested against, or logic Z from main?

At that point it feels like development is happening in parallel timelines and I’m one bad assumption away from losing months of work :sweat_smile:

Do people run into this often?

How do teams keep track of what is actually running where when RC versions, branches, and shared dependencies start evolving independently?