Federal prevailing wage: import a Davis-Bacon General Decision
Until now the wage floor STrOp checked against was California's: a DIR general prevailing wage determination, selected by the bid advertisement date. That covers state-funded work. It does not cover a federally funded job, which binds to a Davis-Bacon General Decision published by the US Department of Labor — a different document, a different selection date, a different craft vocabulary.
Both now sit in the same place. On Settings → Wage imports, pick Federal General Decision and upload the text file SAM.gov gives you. STrOp reads it and shows you every rate line it publishes.
Every line, not a shortlist. A General Decision publishes many rates per trade — "LABORER: Common or General" next to "LABORER: Mason Tender" next to "LABORER: Pipelayer", and two dozen operator groups. All of them are real. Only one of them is the rate your crew works under, and that is not a call software should make: a correctly parsed, correctly published rate that is the wrong group passes every check downstream and shows up months later as a back-wage finding. So nothing is selected for you. You bind one line per trade, and the ones you passed over stay on file — a correction later is a click, not another upload.
The dollars are read from the document, not from a model. General Decisions are published in fixed-width columns, so the rates and fringes are read straight out of them. The only thing we ask a model is which trade a published label belongs to, and it never sees an amount. It also can't answer with a level — journeyman, foreman, apprentice — because a General Decision publishes journey scale and the rest comes from your registered program.
Mixed-funded jobs. A contract can bind to both authorities at once. Where it does, the floor for each classification is the higher total package — basic plus fringe, compared as a whole, never blended. A project now carries one determination per authority, so a job funded from Sacramento and Washington shows both and checks against both.
Two things worth saying plainly. A rate the document publishes as an expression rather than a
number — 3%+5.53, 37.885+a+b — will not import until you resolve it to an amount; we would
rather block than guess at a wage floor. And a trade with no rate bound isn't wage-floor
checked at all, so the review screen tells you how many lines you left behind.