Quarterly report [Sections 13 or 15(d)]

Revenue, Contract Assets and Liabilities and Other Contract Matters - Summary of Remaining Performance Obligations, Disaggregated by Operating Segment and Contract Type (Details)

v3.25.2
Revenue, Contract Assets and Liabilities and Other Contract Matters - Summary of Remaining Performance Obligations, Disaggregated by Operating Segment and Contract Type (Details)
$ in Thousands
Jun. 30, 2025
USD ($)
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation $ 6,800 [1]
Fixed-price and unit-rate  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation 5,616 [2]
T&M and cost-reimbursable  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation 1,184
Operating Segments | Services  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation 470 [1]
Operating Segments | Fabrication  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation 6,330 [1]
Operating Segments | Fixed-price and unit-rate | Services  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation 470 [2]
Operating Segments | Fixed-price and unit-rate | Fabrication  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation 5,146 [2]
Operating Segments | T&M and cost-reimbursable | Fabrication  
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction [Line Items]  
Remaining performance obligation $ 1,184
[1] We expect all of our performance obligations at June 30, 2025, to be recognized as revenue during 2025. Certain factors and circumstances could result in changes in the timing of recognition of our performance obligations as revenue and the amounts ultimately recognized.
[2] Performance obligations at June 30, 2025, include approximately $2.1 million related to the Englobal Business. See Note 3 for further discussion of the Englobal Acquisition.