I have to side with SQ on this one. The agent did her job properly. it also had nothing to do with any authoritarian code.
Moving up from Y to C is not as simple as just collecting the difference between Y and J. Any change other than date requires a new ticket being issued even on UA.
If you were moving up from from a UA Y fare to a C fare, a new ticket would be issued. UA would do this as an exchange with an additional collection. However, the ticket number of your C ticket would differ from your original Y ticket. In the end, it is the same as if a new ticket was being issued.
However, since your situation involved a UA-issued ticket for SQ travel, your best bet was to either make the change at the UA counter or refund the UA ticket and have SQ issue you a ticket for the rest of your journey.
Having SQ change your ticket would have been impossible or grossly complex at best since they have to figure out what is left on your ticket, what the fare from SIN to you destination is, convert it to NUC, subtract the difference, and then cover it to the local currency.