In launching his plan to overhaul France's heavily indebted state rail operator SNCF earlier this year, President Emmanuel Macron knew he was taking aim at a bastion of labour unions which have long defied a range of government reform efforts.
Yet on Tuesday, the 40-year-old centrist was just days from enshrining into law changes that analysts have compared with Margaret Thatcher's taking on British mining unions in the 1980s.
The final text of the SNCF reform, which the government says is needed to cut costs and improve flexibility ahead of the opening of the EU passenger rail market to competition, was approved by lawmakers on Monday.
The National Assembly, where Macron's Republic on the Move (LREM) party has a solid majority, will vote Wednesday, followed by a final vote in the Senate on Thursday.
"The government has committed itself to our rail industry as no other has before us," Transport Minister Elisabeth Borne told Franceinfo radio, referring to pledges for debt relief and infrastructure investments.
"I now urge the unions to assume their responsibilities," she said.
Rail workers have staged weeks of rolling strikes against the plans, vowing to walk off the job two days out of every five until June 28.
They are fighting in particular a move to deny job and pension guarantees to new hires, along with plans to turn the SNCF into a joint-stock company, which they consider a first step toward privatisation.
Tuesday marked the 29th day of strikes since the movement began in early April, making this the longest strike action since a protest against pay and work conditions in the winter of 1986-87.
Yet polls have consistently shown that the unions have failed to win the battle of public opinion, with nearly 60 percent of respondents saying the strikes are unjustified.
The SNCF itself tallies the cost of the strikes since early April at more than 400 million euros ($470 million).
Union leaders have warned the government against claiming victory too early, with some hinting that strikes could be extended into the key summer vacation season.
"Rail workers will decide what to do based on what we obtain, but for now I can solemnly say that this strike is far from over," said Philippe Martinez of the CGT, France's biggest union among public-sector workers.
But at least one union, the CFDT, has said it will suspend the strike next week so that high school students will not have problems attending the all-important "baccalaureat" exams for getting into university.
- 'This changes everything' -
Despite Tuesday's "day of rail anger" that caused a spike in delays and cancellations for France's 4.5 million daily rail passengers, the number of striking workers has steadily tapered off in recent weeks.
The SNCF said 17.6 percent of workers took part on Tuesday -- down from around 34 percent in April -- although 53 percent of train drivers walked off the job.
Yet union leaders can claim to have secured guarantees for existing staff including job security if they take a position with one of the new operators arriving in France, and a government pledge to take on 35 billion euros of SNCF debt.
Lawmakers have also written into the law a government pledge not to sell the newly created SNCF shares.
Unions already appear to tacitly accept an end to job-for-life and early retirement benefits for new hires, agreeing to meet government officials Friday for talks on a new collective labour agreement.
Having refused to back down on the key elements of his plan, Macron may have cleared his path for tricky reforms to France's strained pension system and vast public sector.
"For Emmanuel Macron and (Prime Minister) Edouard Philippe, this political victory against a fortress long deemed unassailable changes everything," the rightwing Figaro newspaper wrote in a front-page editorial.
"Along with the reform of the labour code, the SNCF reform shows that France is not hopelessly condemned to stagnation," it added.
French rail workers have staged weeks of rolling strikes against the government's reform plans, walking off the job two days out of every five