Hello, David:
You are absolutely right.
I was wrong. Although the wbs_code is not a surrogate key, I was using it like it was.
A product may have a wbs_code, but from a wbs_name, It cannot exists alone. So wbs_name has to be included in the products table. My mistake.
Your solution is what needed to be done. A FK referencing projects (wbs_name, project_id) ensures that the wbs_name used in the product is the proper wbs_name of the project. I already tried it and it works.
Thank you very much.
Simon Graffe